Submission #1280704

#TimeUsernameProblemLanguageResultExecution timeMemory
1280704manowoAddk (eJOI21_addk)C++20
92 / 100
1089 ms4556 KiB
#include <bits/stdc++.h>

using namespace std;

// ---- Pragmas for GCC ----
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")

// ---- Macros ----
#define int long long
#define pb push_back
#define all(x)(x).begin(), (x).end()
#define sz(x)((int)(x).size())
#define Airplane ios::sync_with_stdio(false); cin.tie(nullptr);

const int INF = 1e18;
const int MOD = 1e9 + 7;
const int N = 2e5;
int f[N];
int dp[N], dp2[N];
int a[N] , t[4 * N] , b[N];

void build(int  v , int tl , int tr) {
    if(tl == tr) {
        t[v] = 1;
        return;
    }
    int mid = (tl + tr) / 2;
    build(v + v , tl , mid);
    build(v + v + 1 , mid + 1 , tr);
    t[v] = t[v + v] + t[v + v + 1];
}

void upd(int v , int tl , int tr , int pos , int x) {
    if(tl == tr) {
        t[v] = x;
        return;
    }
    int mid = (tl + tr) / 2;
    if(pos <= mid) {
        upd(v + v , tl , mid , pos , x);
    } else {
        upd(v + v + 1 , mid + 1 , tr, pos , x);
    }
    t[v] = t[v + v] + t[v + v + 1];
}

int get(int v , int tl , int tr , int k) {
    if(tl == tr) {
        return tl;
    }
    int ans;
    int mid = (tl + tr) / 2;
    if(k <= t[v + v]) {
        ans = get(v + v , tl , mid , k);
    } else {
        ans = get(v + v + 1 , mid + 1 , tr , k - t[v + v]);
    }
    return ans;
}

int binpow(int b, int e, int mod) {
    int res = 1;
    while (e > 0) {
        if (e % 2 == 1) {
            res = (res * b) % mod;
        }
        b = (b * b) % mod;
        e /= 2;
    }
    return res;
}
bool p(string s) {
    string d = s;
    reverse(all(d));
    return d == s;
}
int ok(long long x){ 
    return 63 - __builtin_clzll(x);
 }

signed main() {
    Airplane
    int n , k;
    cin >> n >> k;
    vector<int> arr(n);
    vector<int> p(n + 1 , 0);
    for(int i = 1; i <= n; i++) {
        cin >> arr[i];
        p[i] = p[i - 1] - arr[i];
    }
    int q;
    cin >> q;
    while(q--) {
        int t;
        cin >> t;
        if(t == 1) {
            int x;
            cin >> x;
        } else if(t == 2) {
            int l , r , m;
            cin >> l >> r >> m;
            int ans = 0;
            for(int i = l; i + m - 1 <= r; i++) {
                ans += p[i + m - 1] - p[i - 1];
            }
            cout << ans *(-1)<< '\n';
        }
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...