Submission #1321341

#TimeUsernameProblemLanguageResultExecution timeMemory
1321341unknown모자이크 (IOI24_mosaic)C++20
22 / 100
1096 ms11440 KiB
#include <bits/stdc++.h> using namespace std; vector<long long> mosaic(vector<int> X, vector<int> Y, vector<int> T, vector<int> B, vector<int> L, vector<int> R) { int Q = T.size(); vector<long long> C(Q); int N = X.size(); vector<bool> X1(N), X2(N), Y1(N), Y2(N); if (N != 1) { X1[0] = Y[1]; Y1[0] = X[1]; for (int i = 1; i < N; i++) { X1[i] = !(X1[i-1]||X[i]); Y1[i] = !(Y1[i-1]||Y[i]); } if (N != 2) { X2[0] = Y[2]; Y2[0] = X[2]; X2[1] = Y1[2]; Y2[1] = X1[2]; for (int i = 2; i < N; i++) { X2[i] = !(X2[i-1]||X1[i]); Y2[i] = !(Y2[i-1]||Y1[i]); } } } int y, x1, x2; for (int i = 0; i < Q; i++) { y = T[i]; x1 = L[i]; x2 = R[i]; if(y==0){C[i]=accumulate(X.begin()+x1, X.begin()+x2+1, 0LL);} else if(y==1){C[i]=accumulate(X1.begin()+x1, X1.begin()+x2+1, 0LL);} else { if (x2 <= 1) { if (x1 == 0) { C[i] += Y[y]; } if (x2 == 1) { C[i] += Y1[y]; } } else { if (x1 == 0) { C[i] += Y[y]; x1++; } if (x1 == 1) { C[i] += Y1[y]; x1++; } if (x1 <= y) { C[i] += accumulate(Y2.begin()+max(2, y-x2+2), Y2.begin()+y-x1+3, 0LL); } if (x2 > y) { C[i] += accumulate(X2.begin()+max(3, x1-y+2), X2.begin()+x2-y+3, 0LL); } } } } 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...