Submission #1166450

#TimeUsernameProblemLanguageResultExecution timeMemory
1166450aminabouakazPyramids (IOI24_pyramids)C++20
0 / 100
1096 ms5700 KiB
#include "pyramids.h" #include <vector> using namespace std; vector<int> pyramidsA, pyramidsB; vector<long long> prefixSumA, prefixSumB; void init(vector<int> A, vector<int> B) { pyramidsA = A; pyramidsB = B; int N = A.size(); prefixSumA.resize(N); prefixSumB.resize(N); prefixSumA[0] = A[0]; prefixSumB[0] = B[0]; for (int i = 1; i < N; ++i) { prefixSumA[i] = prefixSumA[i - 1] + A[i]; prefixSumB[i] = prefixSumB[i - 1] + B[i]; } } bool can_transform(int L, int R, int X, int Y) { long long sumA = prefixSumA[R] - (L > 0 ? prefixSumA[L - 1] : 0); long long sumB = prefixSumB[Y] - (X > 0 ? prefixSumB[X - 1] : 0); if (sumA != sumB) { return false; } vector<int> diffA(R - L), diffB(Y - X); for (int i = L; i < R; ++i) { diffA[i - L] = pyramidsA[i + 1] - pyramidsA[i]; } for (int i = X; i < Y; ++i) { diffB[i - X] = pyramidsB[i + 1] - pyramidsB[i]; } sort(diffA.begin(), diffA.end()); sort(diffB.begin(), diffB.end()); return diffA == diffB; }
#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...