# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
293192 | fucking_do_it | Secret (JOI14_secret) | C++14 | 608 ms | 4672 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 "secret.h"
#include <bits/stdc++.h>
#define le node+node
#define ri node+node+1
#define mid (l+r)/2
using namespace std;
const int inf = 1e3+9;
int n,a[inf],tree[inf<<2],cnt = 0;
vector<int> tmp;
void build(int node,int l,int r){
if(l == r)
return void(tree[node] = a[l]);
build(le,l,mid);
build(ri,mid+1,r);
tree[node] = Secret(tree[le],tree[ri]);
cnt++;
}
void query(int node,int l,int r,int x,int y){
if(l>r || r<x || l>y)
return ;
if(l>=x && r<=y)
return void(tmp.push_back(tree[node]));
query(le,l,mid,x,y);
query(ri,mid+1,r,x,y);
}
void Init(int N, int A[]) {
n = N;
for(int i=1;i<=n;i++)
a[i] = A[i-1];
build(1,1,n);
assert(cnt<=8000);
}
int Query(int L, int R) {
cnt = 0;
tmp.clear();
query(1,1,n,L+1,R+1);
for(int i=tmp.size()-1;i>0;i--)
tmp[i-1] = Secret(tmp[i-1],tmp[i]),cnt++;
assert(cnt <= 20);
return tmp[0];
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |