Submission #502579

# Submission time Handle Problem Language Result Execution time Memory
502579 2022-01-06T09:41:14 Z uncripted Addk (eJOI21_addk) C++11
100 / 100
313 ms 7744 KB
#include<bits/stdc++.h>
using namespace std;
long long pre[100005];
	long long n,k;
long long b1[100005],b2[100005];
void update(long long bit[], long long v, long long x){
	while(v<=n){
		bit[v]+=x;
		v+=v&(-v);
	}
	
	
}
void up(long long l, long long r, long long x){
	update(b1, l, x);
	update(b1, r+1, -x);
	update(b2, l, (l-1)*x);
	update(b2, r+1, -r*x);
}
long long presum(long long bit[], long long v){
	long long s=0;
	while(v>0){
		
	s+=bit[v];
	v-=v&(-v);
	}
	return s;
	
}
long long sum(long long l,long long  r){
	return presum(b1, r)*r-presum(b2, r)-(presum(b1, l-1)*(l-1)-presum(b2, l-1));
}

int main(){

	cin>>n>>k;
	long long a[n+1];

	long long prefix=0;
	for(long long i=1; i<=n; i++){
		cin>>a[i];
		prefix+=a[i];
		up(i,i,prefix);
		
	
	}
	long long q;
	cin>>q;
	while(q--){
		long long x;
		cin>>x;
		if(x==1){
			long long b[k+1];
		for(long long i=1; i<=k; i++){
			
			cin>>b[i];
		}
		up(b[k],n,a[b[1]]-a[b[k]]);
		
		for(long long i=1; i<k; i++){
		up(b[i],n, a[b[i+1]]-a[b[i]] );
		}
		int temp=a[b[1]];
		for(long long i=1; i<k; i++){
			a[b[i]]=a[b[i+1]];
		}
		a[b[k]]=temp;
		continue;	
		}
		long long l,r,m;
		cin>>l>>r>>m;
		
		long long s=0;
		s+=sum(l+m-1, r);
		s-=sum(l-1, r-m);
			
		cout<<s<<endl;
	}
	
	
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 2 ms 332 KB Output is correct
3 Correct 5 ms 368 KB Output is correct
4 Correct 9 ms 396 KB Output is correct
5 Correct 10 ms 460 KB Output is correct
6 Correct 11 ms 440 KB Output is correct
7 Correct 14 ms 504 KB Output is correct
8 Correct 16 ms 460 KB Output is correct
9 Correct 33 ms 572 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 49 ms 956 KB Output is correct
2 Correct 75 ms 1292 KB Output is correct
3 Correct 98 ms 1784 KB Output is correct
4 Correct 193 ms 2872 KB Output is correct
5 Correct 269 ms 4044 KB Output is correct
6 Correct 234 ms 3964 KB Output is correct
7 Correct 229 ms 3956 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 136 ms 1912 KB Output is correct
2 Correct 210 ms 5600 KB Output is correct
3 Correct 313 ms 7744 KB Output is correct
4 Correct 261 ms 6708 KB Output is correct