Submission #1143086

#TimeUsernameProblemLanguageResultExecution timeMemory
1143086ag_1204Mosaic (IOI24_mosaic)C++20
0 / 100
117 ms20908 KiB
#include "mosaic.h" #include<bits/stdc++.h> using namespace std; #define int long long #define vi vector<int> #define pb push_back vi mosaic(vector<signed> X,vector<signed> Y,vector<signed> T,vector<signed> B,vector<signed> L,vector<signed> R) { int n=size(X),q=size(T); vi C(q,0); vi fst; for (int i=n-1;i>0;i--) fst.pb(Y[i]); for (int i=0;i<n;i++) fst.pb(X[i]); for (int s=0;s<10;s++) { vi sum(2*(n-s),0); partial_sum(fst.begin(),fst.end(),sum.begin()+1); for (int i=0;i<q;i++) { if (T[i]==s) { C[i]+=sum[R[i]-T[i]+n-s]-sum[L[i]-T[i]+n-s-1]; T[i]++; } if (L[i]==s) { C[i]+=sum[L[i]-T[i]+n-s]-sum[L[i]-B[i]+n-s-1]; L[i]++; } } if (s==n-1) return C; vi snd(2*(n-s)-3,0); for (int i=0;i<n-s-1;i++) { if (i) { snd[i+n-s-2]=!fst[i+n-s] && !snd[i+n-s-3]; snd[n-s-2-i]=!fst[n-s-i-2] && !snd[n-s-1-i]; } else { snd[i+n-s-2]=!fst[i+n-s] && !fst[n-s-2]; snd[n-s-2-i]=!fst[n-s-i-2] && !fst[n-s]; } } fst=snd; } vi sum(2*n-20,0); partial_sum(fst.begin(),fst.end(),sum.begin()+1); partial_sum(sum.begin(),sum.end(),sum.begin()); for (int i=0;i<q;i++) { C[i]+=sum[R[i]-T[i]+n-10]; C[i]-=sum[L[i]-T[i]+n-11]+sum[R[i]-B[i]+n-11]; if (L[i]-B[i]+n-12>=0) C[i]+=sum[L[i]-B[i]+n-12]; } return C; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...