描述
給定包含N個整數的數組A1, A2, ... AN,你可以選擇任意一個Ai,將Ai旋轉到數組第一項,即將數組變成:
Ai, Ai+1, Ai+2, ... AN, A1, A2, ..., Ai-1
現在小Hi希望旋轉之後的數組滿足:
對於任意K(1 ≤ i ≤ N),前K項的和都是正數。
例如對於A=[3, -5, 2, -2, 3, 0],旋轉成[3, 0, 3, -5, 2, -2]滿足條件。
請你輸出i,代表將Ai旋轉到第一項滿足條件。
如果有多解,你可以輸出任意一個i。如果無解輸出-1。
輸入
第一行包含一個整數N。
第二行包含N個整數A1, A2, ... AN。
對於50%的數據,1 ≤ N ≤ 1000
對於100%的數據,1 ≤ N ≤ 100000, -1000000 ≤ Ai ≤ 1000000
輸出
一個整數表示答案。
樣例輸入
6
3 -5 2 -2 3 0
樣例輸出
5
#include <cstdlib>
#include <cstdio>
using namespace std;
int a[100001];
int main(int argc, char *argv[])
{
int n,j;
long long sum;
while(~scanf("%d",&n)){
sum=0;
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
j=0;
for(int i=0;i<n-j;i++){
sum=sum+a[i];
while(sum<=0)
{
j++;
if(i<n-j)
sum+=a[n-j];
else
break;
}
}
if(sum>0)
printf("%d\n",n-j+1);
else
printf("-1\n");
}
system("PAUSE");
return EXIT_SUCCESS;
}