# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
735746 | sandry24 | Secret (JOI14_secret) | C++17 | 8404 ms | 4364 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "secret.h"
using namespace std;
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pi;
#define pb push_back
#define mp make_pair
#define f first
#define s second
int n;
const int maxn = 1005;
int st[4*maxn];
int secret(int x, int y){
return (x + 2 * (y / 2));
}
int combine(int x, int y){
if(x == -1)
return y;
else if(y == -1)
return x;
else
return Secret(x, y);
}
void build(int v, int tl, int tr, int A[]){
if(tl == tr){
st[v] = A[tl];
} else {
int tm = (tl+tr)/2;
build(v*2, tl, tm, A);
build(v*2+1, tm+1, tr, A);
st[v] = Secret(st[v*2], st[v*2+1]);
}
}
int range_query(int v, int tl, int tr, int l, int r){
if(l > r)
return -1;
if(tl == tr)
return st[v];
int tm = (tl+tr)/2;
return combine(range_query(v*2, tl, tm, l, min(tm, r)),
range_query(2*v+1, tm+1, tr, max(tm+1, l), r));
}
int Query(int L, int R){
return range_query(1, 0, n-1, L, R);
}
void Init(int N, int A[]){
n = N;
build(1, 0, n-1, A);
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |