Submission #333313

#TimeUsernameProblemLanguageResultExecution timeMemory
333313GioChkhaidzeSterilizing Spray (JOI15_sterilizing)C++14
15 / 100
5096 ms5868 KiB
#include <bits/stdc++.h>

#define Tree int h,int l,int r
#define Left (h<<1),l,(l+r)>>1
#define Right ((h<<1)|1),((l+r)>>1)+1,r
#define ll long long

using namespace std;

const int N=1e5+5;

int n,q,k;
int a[N];
ll v[4*N];

void Build(Tree) {
	if (l==r) {
		v[h]=a[l];
		return ;
	}
	
	Build(Left);
	Build(Right);
	
	v[h]=v[(h<<1)]+v[((h<<1)|1)];
}

int t,id,vl;
void Up(Tree) {
	if (id<l || r<id) return ;
	if (l==id && r==id) {
		v[h]=a[l];
		return ;
	}
	
	Up(Left);
	Up(Right);
	
	v[h]=v[(h<<1)]+v[((h<<1)|1)];
}

int L,R;
void Upd(Tree) {
	if (R<l || r<L) return ;
	if (l==r) {
		v[h]/=k;
		return ;
	}
	
	Upd(Left);
	Upd(Right);	
	v[h]=v[(h<<1)]+v[((h<<1)|1)];
}

ll Get(Tree) {
	if (R<l || r<L) return 0;
	if (L<=l && r<=R) return v[h];
	return Get(Left)+Get(Right);
}

main () {
	ios::sync_with_stdio(false);
	cin.tie(NULL),cout.tie(NULL);
	cin>>n>>q>>k;
	for (int i=1; i<=n; i++) {
		cin>>a[i];
	}
	
	Build(1,1,n);
	
	for (int i=1; i<=q; i++) {
		cin>>t;
		if (t==1) {
			cin>>id>>vl;
			a[id]=vl;
			Up(1,1,n);
		}
			else
		if (t==2) {
			cin>>L>>R;
			if (k==1) continue;
			Upd(1,1,n);
		}
			else
		if (t==3) {
			cin>>L>>R;
			cout<<Get(1,1,n)<<"\n";
		}
	}
}

Compilation message (stderr)

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