제출 #760788

#제출 시각아이디문제언어결과실행 시간메모리
760788bachhoangxuanAddk (eJOI21_addk)C++17
100 / 100
78 ms8780 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define maxn 1000005
#define maxk 15
int bit[3][maxn],a[maxn],n,k,q,x[maxk];
int query(int t,int x){
    int res=0;
    for(int i=x;i>=1;i-=(i&(-i))) res+=bit[t][i];
    return res;
}
void update(int t,int x,int val){
    for(int i=x;i<=n;i+=(i&(-i))) bit[t][i]+=val;
}
void up(int x,int val){
    update(0,x,val);
    update(1,x,val*x);
    update(2,x,val*(n-x+1));
}
int calc(int t,int l,int r){
    int res=query(t,r)-query(t,l-1);
    return res;
}
int qu(int l,int r,int m){
    int len=(r-l+1),t=min(len-m,m-1),res=len-2*t;
    return calc(1,l,l+t-1)-calc(0,l,l+t-1)*(l-1)+calc(2,r-t+1,r)-calc(0,r-t+1,r)*(n-r)+calc(0,l+t,r-t)*(t+1);
}
signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
	cin >> n >> k;
    for(int i=1;i<=n;i++){cin >> a[i];up(i,a[i]);}
    cin >> q;
    while(q--){
        int id;cin >> id;
        if(id==2){
            int l,r,m;cin >> l >> r >> m;
            cout << qu(l,r,m) << '\n';
        }
        else{
            for(int i=0;i<k;i++) cin >> x[i];
            for(int i=0;i<k;i++) up(x[i],a[x[(i+1)%k]]-a[x[i]]);
            for(int i=0;i<k-1;i++) swap(a[x[i]],a[x[i+1]]);
        }
    }
}

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

Main.cpp: In function 'long long int qu(long long int, long long int, long long int)':
Main.cpp:25:38: warning: unused variable 'res' [-Wunused-variable]
   25 |     int len=(r-l+1),t=min(len-m,m-1),res=len-2*t;
      |                                      ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...