제출 #1312135

#제출 시각아이디문제언어결과실행 시간메모리
1312135eri16Mosaic (IOI24_mosaic)C++20
0 / 100
76 ms27440 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; vector<ll> mosaic(vector<int> X, vector<int> Y,vector<int> T, vector<int> B,vector<int> L, vector<int> R){ ll n = X.size(); ll row[3][200005]; ll column[3][200005]; for (int i=0; i<n; i++){row[0][i]=X[i];} for (int i=0; i<n; i++){column[0][i]=Y[i];} if (n>1){ row[1][0]=column[0][1]; column[1][0]=row[0][1]; for (int i=1; i<n; i++){row[1][i]=1-(row[1][i-1] | row[0][i]);} for (int i=1; i<n; i++){column[1][i]=1-(column[1][i-1] | column[0][i]);} } if (n>2){ row[2][0]=column[0][2]; column[2][0]=row[0][2]; for (int i=1; i<n; i++){row[2][i]=1-(row[2][i-1] | row[1][i]);} for (int i=1; i<n; i++){column[2][i]=1-(column[2][i-1] | column[1][i]);} } vector <ll> dp_row(n,0); vector <ll> dp_col(n,0); if (n>2){ for (int i=1; i<n; i++){dp_row[i]=dp_row[i-1]+row[2][i];} for (int i=1; i<n; i++){dp_col[i]=dp_col[i-1]+column[2][i];} } vector <ll> dp_row_0(n+1,0); vector <ll> dp_row_1(n+1,0); if (n>2){ for (int i=1; i<n; i++){dp_row_0[i]=dp_row_0[i-1]+row[0][i];} for (int i=1; i<n; i++){dp_row_1[i]=dp_row_1[i-1]+row[1][i];} } ll q = T.size(); vector <ll> ans; ll t,b,l,r; //for (auto x : dp_row_1){cout<<x<<' ';}cout<<"\n"; //for (auto x: row[1]){cout<<x<<' ';}cout<<"\n"; for (int i=0; i<q; i++){ t=T[i]; b=B[i]; l=L[i]; r=R[i]; ll sm=0; if (l==0)sm+=column[t][0]; if (l<=1 && n>1)sm+=column[t][1]; if (l<=2 && n>2)sm+=column[t][2]; l=max(2LL,l); if (t<=2){ l++; if (t==0){sm=sm+dp_row_0[r]-dp_row_0[l-1];} if (t==1){sm=sm+dp_row_1[r]-dp_row_1[l-1];} if (t==2){sm=sm+dp_row[r]-dp_row[l-1];} } else if (n>2 && r>l){ if (t>=r){ sm+=dp_col[t+2-l]-dp_col[t+2-r]; } else if (t<=l){ sm+=dp_row[t+2-r]-dp_row[t+2-l]; } else { sm+=dp_col[t+2-l]-dp_col[1]; sm+=dp_row[t+2-r]-dp_col[1]; sm+=row[2][2]; } } ans.push_back(sm); } return ans; }
#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...