Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define topper top //XDDDDDDD
- #define mp make_pair
- #define pb push_back
- #define st first
- #define nd second
- typedef long long ll;
- typedef long double ld;
- typedef pair<int,int> ii;
- const ld EPS = 1e-9;
- const ld PI = acos(-1);
- const int N = 1e5+5;
- const int MOD = 1e9+7;
- const int INF = 0x3f3f3f3f;
- ll pref[N], pref2[N];
- int shift;
- int n, q, a[N];
- int main(){
- //freopen("in", "r", stdin);
- //freopen("out", "w", stdout);
- scanf("%d", &n);
- for(int i=0; i<n; i++) scanf("%d", &a[i]), pref[i] = a[i];
- for(int i=1; i<n; i++) pref[i] += pref[i-1];
- scanf("%d", &q);
- for(int i=0; i<q; i++) {
- int t; scanf("%d", &t);
- if(t == 1) {
- int l, r;
- scanf("%d %d", &l, &r);
- l--, r--;
- if(l < shift) {
- // case1
- if(r < shift) {
- l -= shift; r -= shift;
- l = -l; r = -r;
- printf("%lld\n", pref2[l] - pref2[r-1]);
- }
- // case2
- else {
- l -= shift; r -= shift;
- l = -l;
- printf("%lld\n", pref2[l] + pref[r]);
- }
- }
- // case3
- else {
- l -= shift; r -= shift;
- printf("%lld\n", pref[r] - (l == 0 ? 0 : pref[l-1]));
- }
- }
- else {
- ll x;
- scanf("%lld", &x);
- shift++;
- pref2[shift] = pref2[shift-1] + x;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement