Submission #636413

#TimeUsernameProblemLanguageResultExecution timeMemory
636413deme_bzAddk (eJOI21_addk)C++14
100 / 100
312 ms5212 KiB
/** * author: demetre_bzekalava **/ #pragma GCC diagnostic warning "-std=c++11" #include <bits/stdc++.h> #define ll long long #define pb push_back #define all(x) (x).begin(), (x).end() #define ff first #define ss second #define eb emplace_back #define sz(x) (int)x.size() using namespace std; const int N=2e5+1; int n,k,q; ll tree[N][2],a[N]; void upd(ll val, int pos, int k){ while(pos < N){ tree[pos][k] += val; pos += (pos & -pos); } } ll get(int pos, int k){ ll res = 0; while(pos > 0){ res += tree[pos][k]; pos -= (pos & -pos); } return res; } ll range_query(int l, int r, int k){ return get(r, k) - get(l-1, k); } void test_case(){ cin >> n >> k; for(int i=1;i<=n;i++){ cin >> a[i]; upd(a[i],i,0); upd((ll)(a[i]*i),i,1); } cin >> q; while(q--){ int t; cin >> t; if(t==1){ int ind[k]; for(int i=0;i<k;i++){ cin >> ind[i]; } int f=a[ind[0]]; for(int i=0;i<k;i++){ int c=ind[i]; int b=ind[(i+1)%k]; ll valc=a[c]; ll valb=a[b]; if(i<k-1){ a[c]=a[b]; } else{ valb=f; a[c]=f; } upd(valb-valc,c,0); upd((valb-valc)*c,c,1); } } else{ int l,r,m; cin >> l >> r >> m; int mid=(l+r)/2; int l1=0; int r1=0; if((r-l+1)<m*2-1){ m=(r-l+1)-m+1; } l1=l+m-1; r1=r-m+1; ll res1=range_query(l, l1-1, 1)-(l-1)*range_query(l, l1-1, 0); ll res2=range_query(l1, r1, 0)*m; ll res3=range_query(r1+1, r, 1)-(r1)*range_query(r1+1, r, 0); res3=(r-r1+1)*range_query(r1+1, r, 0)-res3; cout << res1+res2+res3 << endl; } } } int main(){ int T = 1; //cin >> T; while(T--){ test_case(); } }

Compilation message (stderr)

Main.cpp:5:32: warning: '-std=c++11' is not an option that controls warnings [-Wpragmas]
    5 | #pragma GCC diagnostic warning "-std=c++11"
      |                                ^~~~~~~~~~~~
Main.cpp: In function 'void test_case()':
Main.cpp:77:17: warning: unused variable 'mid' [-Wunused-variable]
   77 |             int mid=(l+r)/2;
      |                 ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...