Submission #915654

#TimeUsernameProblemLanguageResultExecution timeMemory
915654typ_ikSecret (JOI14_secret)C++17
0 / 100
367 ms4640 KiB
#include <bits/stdc++.h> #include "secret.h" #define watch(x) cout << (#x) << " : " << x << '\n' #define boost ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() #define ll long long using namespace std; const int N = 1000 + 128; int t[4 * N], a[N]; map <int, map<int, int> > was; int cnt = 0; // int secret(int x, int y) { // return min((int)1e9, x + 2 * (y/2)); // } int ask(int x, int y) { if (x > y) swap(x, y); if (x == -1) return y; if (was.count(x) && was[x].count(y)) return was[x][y]; ++cnt; return was[x][y] = Secret(x, y); } void build(int v, int tl, int tr) { if (tl == tr) { t[v] = a[tl]; return; } int tm = (tl + tr) >> 1; build(v << 1, tl, tm); build(v << 1 | 1, tm + 1, tr); t[v] = ask(t[v << 1], t[v << 1 | 1]); } int get(int l, int r, int v, int tl, int tr) { if (tl > r || tr < l) return -1; if (l <= tl && tr <= r) return t[v]; int tm = (tl + tr) >> 1; return ask(get(l, r, v << 1, tl, tm), get(l, r, v << 1 | 1, tm + 1, tr)); } int n; void Init(int N, int A[]) { n = N; for (int x = 0; x < n; x++) a[x] = A[x]; build(1, 0, n - 1); } int Query(int L, int R) { return get(L, R, 1, 0, n - 1); } // main() { // boost; // srand(time(NULL)); // solve(); // return 0; // }
#Verdict Execution timeMemoryGrader output
Fetching results...