Submission #938338

#TimeUsernameProblemLanguageResultExecution timeMemory
938338carriewangCrossing (JOI21_crossing)C++17
100 / 100
1068 ms28320 KiB
#include <bits/stdc++.h> #define ll long long #define vi vector<int> #define pii pair<int,int> #define pll pair<ll,ll> #define sz(x) x.size() #define all(x) x.begin(),x.end() #define F first #define S second using namespace std; const int maxn=200005; string sa,sb,sc,t; int n,q,ql[maxn],qr[maxn],a[10][maxn],toi[100],st[1<<20],m[1<<20],lazy[1<<20],ans[maxn]; char c[maxn]; void pull(int x){ if(lazy[x]==0) return; lazy[x<<1]=lazy[x<<1|1]=lazy[x]; st[x]=(m[x]==lazy[x]); lazy[x]=0; } void build(int x,int i,int l,int r){ if(l==r){ m[x]=(1<<a[i][l]); st[x]=(a[i][l]==toi[t[l]]); lazy[x]=0; return; } int mid=(l+r)>>1; build(x<<1,i,l,mid); build(x<<1|1,i,mid+1,r); m[x]=m[x<<1]|m[x<<1|1]; st[x]=st[x<<1]&st[x<<1|1]; lazy[x]=0; } void update(int x,int l,int r,int ql,int qr,int val){ if(ql<=l && r<=qr){ lazy[x]=val; pull(x); return; } pull(x); int mid=(l+r)>>1; if(ql<=mid) update(x<<1,l,mid,ql,qr,val); if(qr>mid) update(x<<1|1,mid+1,r,ql,qr,val); pull(x<<1),pull(x<<1|1); st[x]=st[x<<1]&st[x<<1|1]; } void solve(int i){ build(1,i,0,n-1); if(st[1]) ans[0]=1; for(int j=1;j<=q;j++){ update(1,0,n-1,ql[j],qr[j],(1<<toi[c[j]])); if(st[1]) ans[j]=1; } } int main(){ ios::sync_with_stdio(0),cin.tie(0); toi['J']=0,toi['O']=1,toi['I']=2; cin >> n; cin >> sa >> sb >> sc; for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ int k=(7-i-j)%3; for(int l=0;l<n;l++){ int sum=0; sum+=toi[sa[l]]*i; sum+=toi[sb[l]]*j; sum+=toi[sc[l]]*k; a[i*3+j][l]=sum%3; } } } cin >> q; cin >> t; for(int i=1;i<=q;i++){ cin >> ql[i] >> qr[i] >> c[i]; ql[i]--,qr[i]--; } for(int i=0;i<9;i++) solve(i); for(int i=0;i<=q;i++){ cout << ((ans[i]==1) ? "Yes\n" : "No\n"); } }

Compilation message (stderr)

Main.cpp: In function 'void build(int, int, int, int)':
Main.cpp:24:33: warning: array subscript has type 'char' [-Wchar-subscripts]
   24 |         st[x]=(a[i][l]==toi[t[l]]);
      |                                 ^
Main.cpp: In function 'void solve(int)':
Main.cpp:52:47: warning: array subscript has type 'char' [-Wchar-subscripts]
   52 |         update(1,0,n-1,ql[j],qr[j],(1<<toi[c[j]]));
      |                                            ~~~^
Main.cpp: In function 'int main()':
Main.cpp:66:31: warning: array subscript has type 'char' [-Wchar-subscripts]
   66 |                 sum+=toi[sa[l]]*i;
      |                               ^
Main.cpp:67:31: warning: array subscript has type 'char' [-Wchar-subscripts]
   67 |                 sum+=toi[sb[l]]*j;
      |                               ^
Main.cpp:68:31: warning: array subscript has type 'char' [-Wchar-subscripts]
   68 |                 sum+=toi[sc[l]]*k;
      |                               ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...