Submission #1237831

#TimeUsernameProblemLanguageResultExecution timeMemory
1237831banganMosaic (IOI24_mosaic)C++17
5 / 100
63 ms9940 KiB
#include "mosaic.h" #include <bits/stdc++.h> #include <vector> using namespace std; #define ll long long std::vector<long long> mosaic(std::vector<int> X, std::vector<int> Y, std::vector<int> T, std::vector<int> B, std::vector<int> L, std::vector<int> R) { int N = X.size(); assert(N<=2); int Q = (int)T.size(); vector a(N, vector<ll>(N)); for (int i=0; i<N; i++) a[0][i] = X[i]; for (int i=0; i<N; i++) a[i][0] = Y[i]; for (int i=1; i<N; i++) for (int j=1; j<N; j++) a[i][j] = (a[i][j-1] | a[i-1][j]) ^ 1; for (int i=0; i<N; i++) for (int j=0; j<N; j++) { if (0 <= i-1) a[i][j] += a[i-1][j]; if (0 <= j-1) a[i][j] += a[i][j-1]; if (0 <= i-1 && 0 <= j-1) a[i][j] -= a[i-1][j-1]; } std::vector<long long> C(Q, 0); for (int i=0; i<Q; i++) { int r1=T[i], r2=B[i]; int c1=L[i], c2=R[i]; ll ans = a[r2][c2]; if (0 <= r1-1) ans -= a[r1-1][c2]; if (0 <= c1-1) ans -= a[r2][c1-1]; if (0 <= r1-1 && 0 <= c1-1) ans += a[r1-1][c1-1]; C[i] = ans; } 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...