# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
957464 | FEDIKUS | 비밀 (JOI14_secret) | C++17 | 396 ms | 4792 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "secret.h"
#include<bits/stdc++.h>
using namespace std;
map<pair<int,int>,int> prec;
int *a;
int n;
void dc(int l,int r){
if(l==r){
prec[{l,l}]=a[l];
return;
}
int mid=l+(r-l)/2;
int tren=a[mid+1];
prec[{mid+1,mid+1}]=tren;
for(int i=mid+2;i<=r;i++){
tren=Secret(tren,a[i]);
prec[{mid+1,i}]=tren;
}
tren=a[mid];
prec[{mid,mid}]=tren;
for(int i=mid-1;i>=l;i--){
tren=Secret(a[i],tren);
prec[{i,mid}]=tren;
}
dc(l,mid);
dc(mid+1,r);
}
void Init(int nn, int aa[]) {
n=nn;
a=aa;
dc(0,n-1);
}
int result(int tl,int tr,int l=0,int r=n-1){
int mid=l+(r-l)/2;
if(l<=mid && mid<r){
return Secret(prec[{tl,mid}],prec[{mid+1,tr}]);
}else if(r<=mid){
return result(tl,tr,l,mid);
}else return result(tl,tr,mid+1,r);
}
int Query(int l, int r) {
if(l==r) return a[l];
return result(l,r);
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |