# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
153919 | Mercenary | 비밀 (JOI14_secret) | C++14 | 619 ms | 12496 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "secret.h"
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e3 + 5;
int n;
int s[4 * maxn][maxn];
int a[maxn];
void Build(int x , int l , int r){
int mid = l + r >> 1;
s[x][mid] = a[l];
for(int i = mid + 1 ; i <= r ; ++i){
s[x][i] = Secret(s[x][i - 1] , a[i]);
}
s[x][mid - 1] = a[l - 1];
for(int i = mid - 2 ; i >= l ; --i){
s[x][i] = Secret(a[i] , s[x][i + 1]);
}
if(l == r){
return ;
}
Build(x * 2 , l , mid);
Build(x * 2 + 1 , mid + 1 , r);
}
void Init(int N, int A[]) {
n = N;
for(int i = n ; i >= 1 ; --i){
a[i] = A[i - 1];
}
Build(1 , 1 , n);
}
int query(int x , int l , int r , int L , int R){
int mid = l + r >> 1;
if(l > R || L > r)return INT_MAX;
if(L <= mid && mid <= R){
if(L == mid){
return s[x][R];
}
return Secret(s[x][L],s[x][R]);
}
return min(query(x * 2 , l , mid , L , R) , query(x * 2 + 1 , mid + 1 , r , L , R));
}
int Query(int L, int R) {
++L;++R;
return query(1 , 1 , n , L , R);
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |