Submission #749048

#TimeUsernameProblemLanguageResultExecution timeMemory
749048mariowongSecret (JOI14_secret)C++14
0 / 100
452 ms4740 KiB
#include "secret.h" #include <bits/stdc++.h> using namespace std; map <pair<int,int>,pair<int,bool> > m; /*int Secret(int X,int Y){ return min(X+2*(Y/2),1000000000); }*/ int a[1005]; void ask(int l,int r){ int mid=(l+r)/2; if (l != r){ ask(l,mid); ask(mid+1,r); } int val=a[r]; for (int i=r-1;i>=l;i--){ if (!m[{i,r}].second){ val=Secret(a[i],val); m[{i,r}]={val,true}; } else val=m[{i,r}].first; } } void Init(int N, int A[]) { m.clear(); int mid=(N-1)/2; for (int i=0;i<N;i++) a[i]=A[i]; for (int i=0;i<N;i++) m[{i,i}]={a[i],true}; ask(0,mid); ask(mid+1,N-1); } int Query(int L, int R) { if (m[{L,R}].second) return m[{L,R}].first; for (int i=L;i<R;i++){ if (m[{L,i}].second && m[{i+1,R}].second) return Secret(m[{L,i}].first,m[{i+1,R}].first); } return 1000; } /* int a[105]; int main(){ int n; cin >> n; for (int i=0;i<n;i++) cin >> a[i]; Init(n,a); int q; cin >> q; for (int i=1;i<=q;i++){ int u,v; cin >> u >> v; cout << Query(u,v) << "\n"; } }*/
#Verdict Execution timeMemoryGrader output
Fetching results...