제출 #434943

#제출 시각아이디문제언어결과실행 시간메모리
434943keta_tsimakuridze비밀 (JOI14_secret)C++14
100 / 100
573 ms8280 KiB
#include "secret.h" #include<bits/stdc++.h> using namespace std; int x[1005][1005],a[1005],n; void solve(int l,int r) { if(l==r) return; int mid = (l+r)/2; x[mid][mid] = a[mid]; for(int i=mid-1;i>=l;i--) { x[i][mid] = Secret(a[i],x[i+1][mid]); } x[mid+1][mid+1]=a[mid+1]; for(int i=mid+2;i<=r;i++) { x[mid+1][i] = Secret(x[mid+1][i-1],a[i]); } solve(l,mid); solve(mid+1,r); } void Init(int m, int A[]) { // Secret(0, 1000000000); n = m; for(int i = n; i>0; i--) { a[i] = A[i-1]; } solve(1,n); } int Query(int L, int R) { //cout<<"++";cout<<"++"; L++; R++; if(L == R) return a[L]; int l = 1, r = n; while(true) { int mid = (l+r)/2; if(l<=mid && R==mid) return x[L][mid]; if(L==mid+1 && R>mid) return x[mid+1][R]; if(R<=mid) { r = mid ; continue; } if(L>mid) { l = mid + 1; continue; } // cout<<L<<" "<<mid<<" "<<x[L][mid]<<" "<<a[R]<<endl; return Secret(x[L][mid],x[mid+1][R]); } }
#Verdict Execution timeMemoryGrader output
Fetching results...