#pragma GCC target("avx2")
#pragma GCC optimization("O3")
#pragma GCC optimization("unroll-loops")
#include<bits/stdc++.h>
//#include "aliens.h"
#define rc(x) return cout<<x<<endl,0
#define pb push_back
#define mkp make_pair
#define in insert
#define er erase
#define fd find
#define fr first
#define sc second
typedef long long ll;
typedef long double ld;
const ll INF=0x3f3f3f3f3f3f3f3f;
const ll llinf=(1LL<<62);
const int inf=(1<<30);
const int nmax=3e5+50;
const int mod=1e9+7;
using namespace std;
int n,q,a[nmax],nr[105][105],x,y,i,j,ta[nmax],tt[nmax],rs,sb2,t,b[nmax],sb3,st[4*nmax];
string s;
char c;
vector<pair<int,int> >qr;
void upd(int nod,int l,int r,int p,int v)
{
if(l==r)
{
st[nod]=v;
return;
}
int mid=(l+r)/2;
if(p<=mid)upd(2*nod,l,mid,p,v);
else upd(2*nod+1,mid+1,r,p,v);
st[nod]=max(st[2*nod],st[2*nod+1]);
}
int qry(int nod,int l,int r,int tl,int tr)
{
if(tr<l || tl>r)return 0;
if(tl<=l && r<=tr)return st[nod];
int mid=(l+r)/2;
return max(qry(2*nod,l,mid,tl,tr),qry(2*nod+1,mid+1,r,tl,tr));
}
int main()
{
//freopen("sol.in","r",stdin);
//freopen("sol.out","w",stdout);
//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0);
cin>>n>>q;
for(i=1;i<=n;i++)
{
cin>>c;
a[i]=c-'0';
b[i]=a[i];
}
sb2=1,sb3=1;
for(i=1;i<=q;i++)
{
cin>>s;
if(s[0]=='t')
{
cin>>x;
b[x]^=1;
if(!b[x])sb3=0;
qr.pb(mkp(x,0));
}
else
{
cin>>x>>y;
qr.pb(mkp(x,y));
if(x+1!=y)sb2=0;
}
}
if(sb2)
{
//cout<<1<<endl;
for(i=1;i<=q;i++)
{
x=qr[i-1].fr,y=qr[i-1].sc;
if(!y)
{
a[x]^=1;
if(!a[x])tt[x]+=i-ta[x];
else ta[x]=i;
}
else
{
rs=tt[x];
if(a[x])rs+=i-ta[x];
cout<<rs<<'\n';
}
}
}
else if(sb3)
{
for(i=1;i<=n;i++)
{
if(a[i])upd(1,1,n,i,0);
else upd(1,1,n,i,inf);
}
for(i=1;i<=q;i++)
{
x=qr[i-1].fr,y=qr[i-1].sc;
if(!y)
{
a[x]^=1;
upd(1,1,n,x,i);
}
else
{
rs=qry(1,1,n,x,y-1);
if(rs==inf)cout<<0<<'\n';
else cout<<i-rs+1<<'\n';
}
}
}
else
{
for(t=0;t<q;t++)
{
for(i=1;i<=n;i++)
{
for(j=i;j<=n;j++)
{
if(!a[j])break;
nr[i][j]++;
}
}
x=qr[t].fr,y=qr[t].sc;
if(!y)a[x]^=1;
else cout<<nr[x][y-1]<<'\n';
}
}
return 0;
}
/*
5 11
10010
q 1 2
q 2 3
q 3 4
q 4 5
q 5 6
t 1
q 1 2
t 2
q 2 3
t 2
q 2 3
*/
Compilation message
street_lamps.cpp:2:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
#pragma GCC optimization("O3")
street_lamps.cpp:3:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
#pragma GCC optimization("unroll-loops")
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
376 KB |
Output is correct |
3 |
Correct |
2 ms |
376 KB |
Output is correct |
4 |
Correct |
2 ms |
376 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
2 ms |
376 KB |
Output is correct |
7 |
Incorrect |
2 ms |
380 KB |
Output isn't correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
88 ms |
4644 KB |
Output is correct |
2 |
Correct |
91 ms |
4584 KB |
Output is correct |
3 |
Correct |
101 ms |
4788 KB |
Output is correct |
4 |
Correct |
128 ms |
8240 KB |
Output is correct |
5 |
Correct |
131 ms |
7392 KB |
Output is correct |
6 |
Correct |
118 ms |
8160 KB |
Output is correct |
7 |
Correct |
143 ms |
7204 KB |
Output is correct |
8 |
Correct |
153 ms |
7268 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
376 KB |
Output is correct |
2 |
Incorrect |
3 ms |
376 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
8 ms |
760 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
376 KB |
Output is correct |
3 |
Correct |
2 ms |
376 KB |
Output is correct |
4 |
Correct |
2 ms |
376 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
2 ms |
376 KB |
Output is correct |
7 |
Incorrect |
2 ms |
380 KB |
Output isn't correct |