Submission #1132963

#TimeUsernameProblemLanguageResultExecution timeMemory
1132963lopkusSecret (JOI14_secret)C++20
30 / 100
368 ms8336 KiB
#include <bits/stdc++.h> #include "secret.h" using namespace std; /* int Secret(int x, int y) { return min(x + 2 * (y / 2), (int)1e9); } */ const int N = 1001; vector<int> a(N); int x[N][N]; void Init(int n, int A[]) { for(int i = 0; i < n; i++) { a[i] = A[i]; } for(int i = 0; i < n; i++) { x[i][0] = a[i]; } for (int j = 1; (1 << j) <= n; j++) { for (int i = 0; i + (1 << j) - 1 < n; i++) { x[i][j] = Secret(x[i][j - 1] , x[i + (1 << (j - 1))][j - 1]); //cout << i << " " << i + (1LL << j) - 1 << " " << x[i][j] << "\n"; } } } int Query(int l, int r) { vector<int> V; int ans = - 1; while(l <= r) { int p = - 1; for(int i = 10; i >= 0; i--) { if(l + (1LL << i) - 1 <= r) { // takes this one p = l + (1LL << i); if(ans == - 1) { ans = x[l][i]; } else { ans = Secret(ans, x[l][i]); } break; } } l = p; } return ans; } /* int main() { int Q[4] = {1, 4, 7, 2}; Init(4, Q); cout << Query(0, 3); }*/
#Verdict Execution timeMemoryGrader output
Fetching results...