Submission #440519

#TimeUsernameProblemLanguageResultExecution timeMemory
440519KULIKOLDStreet Lamps (APIO19_street_lamps)C++17
40 / 100
130 ms8336 KiB
//#pragma GCC optimize ("O3") #include <bits/stdc++.h> using namespace std; typedef long long ll; #define endl '\n' const int DIM = 3E5+7; int n,q; int A[DIM]; struct node{ int type,a,b; } Q[DIM]; const int SZ = 107; vector<node> V[SZ]; int ans[DIM]; void solve(){ for(int i = q;i>=1;--i){ V[i] = V[i+1]; if (Q[i].type==1) V[i].push_back({i,Q[i].a,Q[i].b}); } for(int i = 1;i<=q;++i){ for(auto to:V[i]){ ll flag = 0; for(int j = to.a;j<to.b;++j){ if (!A[j]){ flag = 1; break; } } if (!flag) ans[to.type]++; } if (Q[i].type==0) A[Q[i].a]^=1; if (Q[i].type) cout<<ans[i]<<endl; } } int last[DIM],sum[DIM]; void solve1(){ for(int i = 1;i<=q;++i){ if (Q[i].type==1){ cout<<(i-last[Q[i].a])*A[Q[i].a]+sum[Q[i].a]<<endl; } else{ sum[Q[i].a]+=(i-last[Q[i].a])*A[Q[i].a]; last[Q[i].a] = i; A[Q[i].a]^=1; } } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>q; for(int i = 1;i<=n;++i){ char ch; cin>>ch; A[i] = int(ch-'0'); } int flag = 0; for(int i = 1;i<=q;++i){ string s; cin>>s; Q[i].type = (s=="query"); if (Q[i].type==1) { cin >> Q[i].a >> Q[i].b; if (Q[i].b-Q[i].a!=1) flag = 1; } else cin>>Q[i].a; } if (n<=100 && q<=100) solve(); else if (flag==0) solve1(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...