fork download
  1. #include<stdio.h>
  2. long long ar[100000];
  3. long long lazy[1000000];
  4. long long tree[1000000];
  5. void bt(long long node,long long a,long long b)
  6. {
  7. if(a>b)
  8. return ;
  9. if(a==b)
  10. {
  11. tree[node]=ar[a];
  12. return;
  13. }
  14. bt(node*2,a,(a+b)/2);
  15. bt(node*2+1,(a+b)/2+1,b);
  16. tree[node]=tree[node*2]+tree[node*2+1];
  17. }
  18. void ut(long long node,long long a,long long b,long long i,long long j,long long num)
  19. {
  20. if(lazy[node]!=0)
  21. {
  22. tree[node]=tree[node]+lazy[node];
  23.  
  24. if(a!=b)
  25. {
  26. lazy[2*node]=lazy[2*node]+lazy[node];
  27. lazy[2*node+1]=lazy[2*node+1]+lazy[node];
  28. }
  29. lazy[node]=0;
  30.  
  31. }
  32. if(a > b || a > j || b < i)
  33. return;
  34. if(a>=i && b<=j)
  35. {
  36. tree[node]=tree[node]+num;
  37. if(a!=b)
  38. {
  39. lazy[2*node]=lazy[2*node]+num;
  40. lazy[2*node+1]=lazy[2*node+1]+num;
  41. }
  42. return;
  43. }
  44. ut(node*2, a, (a+b)/2, i, j,num);
  45. ut(1+node*2, 1+(a+b)/2, b, i, j,num);
  46.  
  47. tree[node] = tree[node*2]+tree[node*2+1];
  48. }
  49. int main()
  50. {
  51. long long n,i,x,y,num;
  52. scanf("%lld",&n);
  53. for(i=0;i<n;i++)
  54. scanf("%lld",&ar[i]);
  55. bt(1,0,n-1);
  56. scanf("%lld%lld%lld",&x,&y,&num);
  57. ut(1,0,n-1,x,y,num);
  58. printf("1\n");
  59. }
Success #stdin #stdout 0s 19864KB
stdin
Standard input is empty
stdout
1