比较简单的题目,但是需要仔细理解题意,觉得思维题目最重要的是要找到最优化的方法去解决,这样才能训练思维能力,而不能做出来就行了...
/*
http://blog.youkuaiyun.com/liuke19950717
*/
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=1e5+5;
int x[maxn];
int cnt(double s)
{
int tp=0;
for(int i=1;i<maxn;++i)
{
tp+=x[i];
if(tp>s)
{
return i;
}
}
}
int judge(int sign)
{
int tp=0;
for(int i=1;i<sign;++i)
{
tp+=x[i];
}
return tp;
}
int main()
{
int n;
while(~scanf("%d",&n))
{
int sum=0;
for(int i=1;i<=n;++i)
{
scanf("%d",&x[i]);
sum+=x[i];
}
int sign=cnt(sum/2.0);
sum-=x[sign];
int tp=judge(sign);
if(tp>sum/2.0)
{
--sign;
}
printf("%d %d\n",sign,n-sign);
}
return 0;
}