제출 #384099

#제출 시각아이디문제언어결과실행 시간메모리
384099ritul_kr_singh비밀 (JOI14_secret)C++17
6 / 100
755 ms8428 KiB
#include "secret.h" #include <bits/stdc++.h> using namespace std; int b[1000][1000], n; void PreCalc(int lx, int rx){ if(rx-lx<=2) return; int mx = (lx+rx)/2; PreCalc(lx, mx); PreCalc(mx, rx); for(int i=mx-2; i>=0; --i) b[i][mx-1] = Secret(b[i][i], b[i+1][mx-1]); for(int i=mx+1; i<rx; ++i) b[mx][i] = Secret(b[mx][i-1], b[i][i]); } void Init(int N, int a[]){ n = N; for(int i=0; i<1000; ++i) for(int j=0; j<1000; ++j) b[i][j] = i-j ? -1 : a[i]; PreCalc(0, n); } int Calc(int l, int r, int lx, int rx){ int mx = (lx+rx)/2; if(r<mx) return Calc(l, r, lx, mx); if(l>=mx) return Calc(l, r, mx, rx); return Secret(b[l][mx-1], b[mx][r]); } int Query(int L, int R){ if(L==R) return b[L][L]; if(L+1==R) return Secret(b[L][L], b[R][R]); return Calc(L, R, 0, n); }
#Verdict Execution timeMemoryGrader output
Fetching results...