제출 #293192

#제출 시각아이디문제언어결과실행 시간메모리
293192fucking_do_it비밀 (JOI14_secret)C++14
30 / 100
608 ms4672 KiB
#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 timeMemoryGrader output
Fetching results...