fork(1) download
  1. #include <iostream>
  2. #include <cstring>
  3. #include <cstdio>
  4. #include <algorithm>
  5. namespace IO{
  6. const int SIZE = 1 << 19;
  7. char buff[SIZE], *p = buff + SIZE;
  8. char read_char(){
  9. if( p == buff + SIZE ){
  10. fread( buff, 1, SIZE, stdin );
  11. p = buff;
  12. }
  13. return *(p++);
  14. }
  15. inline int read_str(char * s){
  16. char c;
  17. while( isspace(c = read_char()) );
  18. while( !isspace(c = read_char()) ) {
  19. *s=c;
  20. s++;
  21. }
  22. *s=0;
  23. return 0;
  24. }
  25.  
  26. inline int read_int(){
  27. char c,pc;
  28. pc=c=read_char(); while( (!isdigit(c)) ) {pc=c;c=read_char();}
  29. int r = c-'0';
  30. while( isdigit( c = read_char() ) )
  31. r = 10*r + c - '0';
  32. if(pc=='-')
  33. return -1*r;
  34. return r;
  35. }
  36. }
  37. using namespace IO;
  38. using namespace std;
  39. #define MAX 1000005
  40.  
  41. long long in[MAX], psum, sum, res1, res;
  42. int N;
  43.  
  44. int main(){
  45. int t;
  46. t=read_int();
  47. while(t--){
  48. res = res1=sum=0;
  49. //cin >> read_int();
  50. N=read_int();
  51. for(int i=N-1;i>=0;i--)
  52. in[i]=read_int();
  53. for(int i=0;i<N-1;i++) // N-1 is left
  54. {
  55. //psum = sum;
  56. sum = sum + in[i];
  57. res1= res1 + in[i] + sum;
  58. if(sum < 0){
  59. res = res + res1;
  60. sum = 0;
  61. res1=0;
  62. }
  63. //cout << res <<' '<< res1 << ' ' << sum << endl;
  64. }
  65. res = res + res1 + in[N-1];
  66. cout << res << endl;
  67. }
  68. return 0;
  69. }
Success #stdin #stdout 0s 11624KB
stdin
1 
4 
1 
2 
3 
-4
stdout
6