Submission #166520

#TimeUsernameProblemLanguageResultExecution timeMemory
166520losmi247Secret (JOI14_secret)C++14
0 / 100
627 ms8444 KiB
#include <bits/stdc++.h> #include "secret.h" using namespace std; typedef long long ll; typedef pair <int,int> p; const int N = 1005; int n,a[N]; int x[N][N]; bool imam[N]; /*int Secret(int a,int b){ cout << a << " " << b << endl; int r; cin >> r; return r; }*/ void nesto(int l,int r){ int mid = l+(r-l)/2; if(mid >= r || mid < l){ return; } x[mid][mid] = a[mid]; x[mid+1][mid+1] = a[mid+1]; imam[mid] = 1; for(int i = mid-1; i >= l; i--){ x[i][mid] = Secret(a[i],x[i+1][mid]); } for(int i = mid+2; i <= r; i++){ x[mid+1][i] = Secret(x[mid+1][i-1],a[i]); } nesto(l,mid); nesto(mid+1,r); } int Query(int l,int r){ if(l == r){ return a[l]; } if(l+1 == r){ return Secret(a[l],a[r]); } int pos = 0; for(int i = l; i <= r; i++){ if(imam[i]){ pos = i; break; } } /*cout << "naso " << pos << endl; cout << "to su " << x[l][pos] << " " << x[pos+1][r] << endl;*/ return Secret(x[l][pos],x[pos+1][r]); } void Init(int l,int d[]){ n = l; for(int i = 1; i <= n; i++){ a[i] = d[i-1]; } nesto(1,n); /*cout << "eve " << endl; for(int i = 1; i <= n; i++){ for(int j = i; j <= n; j++){ cout << i << " " << j << " " << x[i][j] << endl; } } cout << endl;*/ } /*int main(){ int a[4] = {1,2,3,4}; Init(4,a); cout << Query(2,4) << endl; cout << Query(1,3) << endl; cout << Query(1,4) << endl; }*/
#Verdict Execution timeMemoryGrader output
Fetching results...