Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 3rd, 2012  |  syntax: C++  |  size: 1.38 KB  |  hits: 15  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. /*
  2.  this code was written by Zanaty
  3.  problem kind:
  4.  */
  5. #include<iostream>
  6. #include<string.h>
  7. #include<vector>
  8. #include<stack>
  9. #include<queue>
  10. #include<algorithm>
  11. #include<stdio.h>
  12. #include<set>
  13. #include<cmath>
  14. #include<fstream>
  15. #include<memory.h>
  16. #include<map>
  17. #include<sstream>
  18. #include<climits>
  19. #include <ext/hash_set>
  20. #include <ext/hash_map>
  21. using namespace __gnu_cxx;
  22.  
  23. #define OO 10e8
  24. using namespace std;
  25.  
  26. #define rep(i,n) for((i)=0;(i)<(int)(n);(i)++)
  27. #define reps(i,x,n) for((i)=(x);(i)<(int)(n);(i)++)
  28. #define repi(i,n) for((i)=(n)-1;(i)>=0;(i)--)
  29. #define SZ(v) (int)v.size()
  30. #define mp(x,y) make_pair(x,y)
  31.  
  32. int A[1000005], B[1000005], C[1000005], D[1000005], arr[1000005];
  33. int main() {
  34. #ifndef ONLINE_JUDGE
  35.         freopen("test.txt", "rt", stdin);
  36.         //freopen("out.txt", "wt", stdout);
  37. #endif
  38.         int n;
  39.         while (scanf("%d", &n) && n != 0) {
  40.                 for(int i=1;i<=n;i++)
  41.                         scanf("%d", &arr[i]);
  42.                 A[0] = 0;
  43.                 for(int i=0;i<=n;i++){
  44.                         A[i] = A[i - 1] + arr[i];
  45.                 }
  46.                 B[n+1] = 0;
  47.                 for(int i=n;i>=1;i--){
  48.                         B[i] = B[i + 1] + arr[i];
  49.                 }
  50.                 C[0] = 1<<30;
  51.                 for(int i=1;i<=n;i++){
  52.                         C[i] = min(arr[i], C[i - 1]);
  53.                 }
  54.                 D[n+1] = 1<<30;
  55.                 for(int i=n;i>=1;i--){
  56.                         D[i] = min(arr[i], arr[i] + D[i + 1]);
  57.                 }
  58.                 int res = (D[1]>=0);
  59.                 for(int i=2;i<=n;i++){
  60.                         if (D[i] >= 0 && B[i] + C[i-1] >= 0) {
  61.                                 res++;
  62.                         }
  63.                 }
  64.                 printf("%d\n",res);
  65.         }
  66.  
  67.         return 0;
  68. }