Submission #139613

# Submission time Handle Problem Language Result Execution time Memory
139613 2019-08-01T07:29:42 Z FedericoS Street Lamps (APIO19_street_lamps) C++14
60 / 100
791 ms 26820 KB
#include <iostream>
#include <vector>
using namespace std;
typedef pair<int,int> pii;

bool sub1=true;
bool sub2=true;

int N,Q;
char c;
string s;
int A[300005],B[300005];
bool P[300005];

bool T[105][105];

vector<pii> V[300005];

int INF=1e9;
int R[1200005];

void update(int a, int b, int k=1, int l=0, int r=N-1){
	if(l==r)
		R[k]=b;
	else{
		int m=(l+r)/2;
		if(a<=m)
			update(a,b,2*k,l,m);
		else
			update(a,b,2*k+1,m+1,r);
		R[k]=max(R[2*k],R[2*k+1]);
	}
}

int query(int a, int b, int k=1, int l=0, int r=N-1){
	if(b<l or r<a)
		return -1;
	else if(a<=l and r<=b)
		return R[k];
	else{
		int m=(l+r)/2;
		return max(query(a,b,2*k,l,m),query(a,b,2*k+1,m+1,r));
	}
}

int main(){
	cin>>N>>Q;
	for(int i=0;i<N;i++){
		cin>>c;
		P[i]=(c=='1');
		if(N<=100 and Q<=100)
			T[0][i]=P[i];
	}

	for(int i=1;i<Q+1;i++){
		cin>>s;
		if(s=="query"){
			cin>>A[i]>>B[i];
			A[i]--;
			B[i]--;
			if(B[i]-A[i]!=1)
				sub2=false;
		}
		else{
			cin>>A[i];
			A[i]--;
			B[i]=-1;
		}
	}

	if(sub1 and N<=100 and Q<=100){
		for(int i=1;i<Q+1;i++){
			if(B[i]==-1)
				T[i][A[i]]=true;
			else{
				int ans=0;
				for(int k=0;k<i;k++){
					bool flag=true;
					for(int j=A[i];j<B[i];j++)
						flag&=T[k][j];
					ans+=flag;
				}
				cout<<ans<<"\n";
			}
			for(int j=0;j<N;j++)
				T[i][j]^=T[i-1][j];
		}
	}
	else if(sub2){

		for(int j=0;j<N;j++)
			V[j].push_back({0,0});

		for(int i=1;i<Q+1;i++){

			int k=A[i];

			if(B[i]==-1){

				if(P[k])
					V[k].push_back({i,V[k].back().second+i-V[k].back().first});
				else
					V[k].push_back({i,V[k].back().second});

				P[k]=!P[k];
			}
			else{

				if(P[k])
					cout<<V[k].back().second+i-V[k].back().first<<"\n";
				else
					cout<<V[k].back().second<<"\n";
			}
		}
	}
	else{

		for(int j=0;j<N;j++){
			if(!P[j])
				update(j,INF);
			else
				update(j,0);
		}

		for(int i=1;i<Q+1;i++){
			if(B[i]==-1)
				update(A[i],i);
			else
				cout<<max(0,i-query(A[i],B[i]-1))<<"\n";
		}
	}
}
# Verdict Execution time Memory Grader output
1 Correct 9 ms 7416 KB Output is correct
2 Correct 8 ms 7416 KB Output is correct
3 Correct 8 ms 7388 KB Output is correct
4 Correct 9 ms 7416 KB Output is correct
5 Correct 9 ms 7416 KB Output is correct
6 Correct 9 ms 7416 KB Output is correct
7 Correct 9 ms 7544 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 330 ms 13384 KB Output is correct
2 Correct 353 ms 13248 KB Output is correct
3 Correct 394 ms 13628 KB Output is correct
4 Correct 576 ms 22076 KB Output is correct
5 Correct 602 ms 25280 KB Output is correct
6 Correct 564 ms 26116 KB Output is correct
7 Correct 660 ms 25592 KB Output is correct
8 Correct 645 ms 26820 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 10 ms 7416 KB Output is correct
2 Correct 10 ms 7416 KB Output is correct
3 Correct 10 ms 7544 KB Output is correct
4 Correct 10 ms 7416 KB Output is correct
5 Correct 489 ms 14804 KB Output is correct
6 Correct 573 ms 15284 KB Output is correct
7 Correct 654 ms 15580 KB Output is correct
8 Correct 782 ms 17172 KB Output is correct
9 Correct 326 ms 10756 KB Output is correct
10 Correct 359 ms 10956 KB Output is correct
11 Correct 366 ms 10980 KB Output is correct
12 Correct 791 ms 15716 KB Output is correct
13 Correct 743 ms 16908 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 11 ms 7416 KB Output is correct
2 Incorrect 10 ms 7472 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 9 ms 7416 KB Output is correct
2 Correct 8 ms 7416 KB Output is correct
3 Correct 8 ms 7388 KB Output is correct
4 Correct 9 ms 7416 KB Output is correct
5 Correct 9 ms 7416 KB Output is correct
6 Correct 9 ms 7416 KB Output is correct
7 Correct 9 ms 7544 KB Output is correct
8 Correct 330 ms 13384 KB Output is correct
9 Correct 353 ms 13248 KB Output is correct
10 Correct 394 ms 13628 KB Output is correct
11 Correct 576 ms 22076 KB Output is correct
12 Correct 602 ms 25280 KB Output is correct
13 Correct 564 ms 26116 KB Output is correct
14 Correct 660 ms 25592 KB Output is correct
15 Correct 645 ms 26820 KB Output is correct
16 Correct 10 ms 7416 KB Output is correct
17 Correct 10 ms 7416 KB Output is correct
18 Correct 10 ms 7544 KB Output is correct
19 Correct 10 ms 7416 KB Output is correct
20 Correct 489 ms 14804 KB Output is correct
21 Correct 573 ms 15284 KB Output is correct
22 Correct 654 ms 15580 KB Output is correct
23 Correct 782 ms 17172 KB Output is correct
24 Correct 326 ms 10756 KB Output is correct
25 Correct 359 ms 10956 KB Output is correct
26 Correct 366 ms 10980 KB Output is correct
27 Correct 791 ms 15716 KB Output is correct
28 Correct 743 ms 16908 KB Output is correct
29 Correct 11 ms 7416 KB Output is correct
30 Incorrect 10 ms 7472 KB Output isn't correct
31 Halted 0 ms 0 KB -