1203: Super-increasing sequence
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 207 Solved: 65
[Submit][Status][Web Board]
Description
如果一个序列中任意一项都大于前面所有项之和,那么我们就称这个序列为超递增序列。
现在有一个整数序列,你可以将序列中任意相邻的若干项合并成一项,合并之后这项的值为合并前各项的值之和。通过若干次合并,最终一定能得到一个超递增序列,那么得到的超递增序列最多能有多少项呢?
Input
输入数据的第一行包含正整数T (1 <= T <= 500),表示接下来一共有T组测试数据。
每组测试数据的第一行包含一个整数N (1 <= N <= 100000),表示这个整数序列一共有N项。接下来一行包含N个不大于10000的正整数,依次描述了这个序列中各项的值。
至多有10组数据满足N > 1000。
Output
对于每组测试数据,用一行输出一个整数,表示最终得到的超递增序列最多能有多少项。
Sample Input
321 131 2 461 2 4 3 6 5
Sample Output
134
#include<iostream>
using namespace std;
int main()
{
int t ;
cin>>t;
while(t--){
int n;
cin>>n;
int i,a[100002],sum=0,count=1,sum1=0;
for(i=0;i<n;i++)
cin>>a[i];
sum = a[0];
for(i=1;i<n;i++)
{
sum1+=a[i];
if(sum1>sum)
{
sum+=sum1;
count++;
sum1=0;
}
else
continue;
}
cout<<count<<endl;
}
return 0;
}