제출 #475447

#제출 시각아이디문제언어결과실행 시간메모리
475447keta_tsimakuridzeAddk (eJOI21_addk)C++14
100 / 100
684 ms9412 KiB
#include<bits/stdc++.h> #define f first #define s second #define int long long #define pii pair<int,int> using namespace std; const int N = 2e5 + 5, mod = 1e9 + 7; // ! int t, n, q, a[N], tree[4 * N],lazy[4*N],b[20]; void push(int u,int l,int r) { tree[u] += lazy[u] * (r - l + 1); if(l != r) { lazy[2 * u] += lazy[u]; lazy[2 * u + 1] += lazy[u]; } lazy[u] = 0; } void upd(int u,int start,int end,int l,int r,int val) { push(u,l,r); if(l > end || r < start) return; if(start <= l && r <= end) { lazy[u] = val; push(u,l,r); return; } int mid = (l + r)/2; upd(2 * u, start, end, l, mid, val); upd(2 * u + 1, start, end, mid + 1, r, val); tree[u] = tree[2 * u] + tree[2 * u + 1]; } int get(int u,int start,int end,int l,int r) { push(u,l,r); if(l > end || r < start) return 0; if(start <= l && r <= end) return tree[u]; int mid = (l + r)/2; return get(2 * u, start,end,l,mid) + get(2 * u + 1,start,end,mid+1,r); } main(){ int K; cin >> n >> K; // if(K > 1) return 0; for(int i = 1; i <= n; i++) cin >> a[i], upd(1,i,n,1,n,a[i]); int q; cin >> q; while(q--) { int t; cin >> t; if(t == 1) { for(int i = 1; i <= K; i++) { cin >> b[i]; } b[K + 1] = b[1]; for(int i = 1; i <= K; i++) upd(1,b[i],n,1,n,a[b[i + 1]] - a[b[i]]); ///a[b[1]] = a[b[2]]..... int saved = a[b[1]]; for(int i = 1; i <= K; i++) { a[b[i]] = a[b[i + 1]]; } a[b[K]] = saved; // for(int i = 1; i <= K; i++) cout << a[b[i]] << endl; continue; } int l,r,m; cin >> l >> r >> m; // cout << get(1,l + m - 1,r,1,n) <<" "<<l + m - 1 <<"__"<<r<<endl; cout << get(1,l + m - 1, r, 1, n) - get(1,l - 1, r - m, 1,n) << endl; } }

컴파일 시 표준 에러 (stderr) 메시지

Main.cpp:37:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   37 | main(){
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...