Advertisement
joaopedroxavier

Untitled

Apr 26th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.39 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define topper top //XDDDDDDD
  6.  
  7. #define mp make_pair
  8. #define pb push_back
  9. #define st first
  10. #define nd second
  11.  
  12. typedef long long ll;
  13. typedef long double ld;
  14. typedef pair<int,int> ii;
  15.  
  16. const ld EPS = 1e-9;
  17. const ld PI = acos(-1);
  18.  
  19. const int N = 1e5+5;
  20. const int MOD = 1e9+7;
  21. const int INF = 0x3f3f3f3f;
  22.  
  23. ll pref[N], pref2[N];
  24. int shift;
  25. int n, q, a[N];
  26.  
  27. int main(){
  28.   //freopen("in", "r", stdin);
  29.   //freopen("out", "w", stdout);
  30.  
  31.   scanf("%d", &n);
  32.   for(int i=0; i<n; i++) scanf("%d", &a[i]), pref[i] = a[i];
  33.   for(int i=1; i<n; i++) pref[i] += pref[i-1];
  34.  
  35.   scanf("%d", &q);
  36.   for(int i=0; i<q; i++) {
  37.     int t; scanf("%d", &t);
  38.     if(t == 1) {
  39.       int l, r;
  40.       scanf("%d %d", &l, &r);
  41.       l--, r--;
  42.       if(l < shift) {
  43.         // case1
  44.         if(r < shift) {
  45.           l -= shift; r -= shift;
  46.           l = -l; r = -r;
  47.           printf("%lld\n", pref2[l] - pref2[r-1]);
  48.         }
  49.         // case2
  50.         else {
  51.           l -= shift; r -= shift;
  52.           l = -l;
  53.           printf("%lld\n", pref2[l] + pref[r]);
  54.         }
  55.       }
  56.       // case3
  57.       else {
  58.         l -= shift; r -= shift;
  59.         printf("%lld\n", pref[r] - (l == 0 ? 0 : pref[l-1]));
  60.       }
  61.     }
  62.     else {
  63.       ll x;
  64.       scanf("%lld", &x);
  65.       shift++;
  66.       pref2[shift] = pref2[shift-1] + x;
  67.     }
  68.   }
  69.  
  70.   return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement