Submission #1354851

#TimeUsernameProblemLanguageResultExecution timeMemory
1354851rana_azkaAddk (eJOI21_addk)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

const int INF = 1e18;
const int MOD = 1e9+7;
const int MAXN = 2e6;

#define md ((lf+rg)/2)
#define lc (pos*2)
#define rc (pos*2+1)

struct node{
    int sum = 0;
    int dariKiri = 0;
    int dariKanan = 0;

    node(){
        sum = 0;
        dariKiri = 0;
        dariKanan = 0;
    }
};

int n, m;
int arr[MAXN+5];
node segtree[4*MAXN+5];

node merge(node a, node b){
    node ret;
    ret.sum = a.sum + b.sum;
    ret.dariKiri = a.dariKiri + b.dariKiri;
    ret.dariKanan = a.dariKanan + b.dariKanan;
    return ret;
}

void build(int lf, int rg, int pos){
    if(lf == rg){
        segtree[pos].sum = arr[lf];
        segtree[pos].dariKiri = arr[lf] * (n - lf + 1);
        segtree[pos].dariKanan = arr[lf] * (i);
        return ;
    }

    build(lf, md, lc);
    build(md+1, rg, rc);

    segtree[pos] = merge(segtree[lc], segtree[rc]);
}

void update(int idx, int val, int lf, int rg, int pos){
    if(lf == rg){
        segtree[pos].sum = val;
        segtree[pos].dariKiri = val * (n - lf + 1);
        segtree[pos].dariKanan = val * (i);
        return ;
    }

    if(idx <= md) update(idx, val, lf, md, lc);
    else update(idx, val, md+1, rg, rc);

    segtree[pos] = merge(segtree[lc], segtree[rc]);
}
void update(int ql, int qr){ update(ql, qr, 1, n, 1) }

node query(int ql, int qr, int lf, int rg, int pos){
    node ret;
    if(qr < lf || rg < ql) return ret;
    if(ql <= lf && rg <= qr) return segtree[pos];
    merge(query(ql, qr, lf, md, lc), query(ql, qr, md+1, rg, rc));
}
node query(int ql, int qr){ return query(ql, qr, 1, n, 1) }

void solve(){
    cin >> n >> k;
    for(int i = 1; i <= n; i++) cin >> arr[i];

    int q; cin >> q;
    while(q--){
        int tipe; cin >> tipe;

        if(tipe == 1){
            vector<int> idx;
            for(int i = 0; i < k; i++){
                int x; cin >> x;
                idx.push_back(x);
            }

            int temp = arr[idx[0]];
            for(int i = 0; i < k - 1; i++) arr[idx[i]] = arr[idx[i+1]];
            arr[idx[k-1]] = temp;

            for(int i = 0; i < k; i++) update(idx[i], arr[idx[i]]);
        }else{
            int l, r, rng; cin >> l >> r >> rng;

            int contribute = min(rng, (r - l + 1) - rng + 1);
            int ans = query(l, r).sum * contribute;
            
            int batasKiri = l + contribute - 1
            ans -= query(l, batasKiri).dariKiri - (query(l, batasKiri).sum * contribute);

            int batasKanan = r - contribute + 1;
            ans -= query(batasKanan, r).dariKanan - (query(batasKanan, r).sum * contribute);

            // cerr << "=> ";
            cout << ans << endl;
        }
    }
}

signed main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    int tc = 1;
    // cin >> tc;
    while(tc--){
        solve();
    }

    return 0;
}

Compilation message (stderr)

Main.cpp: In function 'void build(long long int, long long int, long long int)':
Main.cpp:41:45: error: 'i' was not declared in this scope
   41 |         segtree[pos].dariKanan = arr[lf] * (i);
      |                                             ^
Main.cpp: In function 'void update(long long int, long long int, long long int, long long int, long long int)':
Main.cpp:55:41: error: 'i' was not declared in this scope
   55 |         segtree[pos].dariKanan = val * (i);
      |                                         ^
Main.cpp: In function 'void update(long long int, long long int)':
Main.cpp:64:53: error: expected ';' before '}' token
   64 | void update(int ql, int qr){ update(ql, qr, 1, n, 1) }
      |                                                     ^~
      |                                                     ;
Main.cpp: In function 'node query(long long int, long long int)':
Main.cpp:72:58: error: expected ';' before '}' token
   72 | node query(int ql, int qr){ return query(ql, qr, 1, n, 1) }
      |                                                          ^~
      |                                                          ;
Main.cpp: In function 'void solve()':
Main.cpp:75:17: error: 'k' was not declared in this scope
   75 |     cin >> n >> k;
      |                 ^
Main.cpp:101:13: error: expected ',' or ';' before 'ans'
  101 |             ans -= query(l, batasKiri).dariKiri - (query(l, batasKiri).sum * contribute);
      |             ^~~
Main.cpp: In function 'node query(long long int, long long int, long long int, long long int, long long int)':
Main.cpp:70:10: warning: control reaches end of non-void function [-Wreturn-type]
   70 |     merge(query(ql, qr, lf, md, lc), query(ql, qr, md+1, rg, rc));
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~