Offer收割]程式設計練習賽50---迴圈陣列
阿新 • • 發佈:2019-02-18
描述 給定包含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; }