Submission #1015728

#TimeUsernameProblemLanguageResultExecution timeMemory
1015728mnbvcxz123Secret (JOI14_secret)C++17
0 / 100
14289 ms8784 KiB
    #include<bits/stdc++.h>
    #include"secret.h"
    using namespace std;
    using ll=long long;
    using pi=pair<int,int>;
     
    #define pb push_back
    #define fi first
    #define se second
     
    constexpr int N=1e3+5;
    constexpr int lg=11;
    int res[lg][N];
    int mask[N];
    int a[N];
     
    void build(int l, int r, int pw){
            if(l==r)return;
            int m=(l+r)>>1;
            res[pw][m]=a[m];
            for(int i=m-1;i>=l;--i)
                    res[pw][i]=Secret(a[i],res[pw][i+1]);
            res[pw][m+1]=a[m+1];
            for(int i=m+2;i<=r;++i)
                    res[pw][i]=Secret(res[pw][i-1],a[i]);
            for(int i=m+1;i<=r;++r)
                    mask[i]^=1<<pw;
            build(l,m,pw+1);
            build(m+1,r,pw+1);
    }
     
    void Init(int n, int t[]){
            for(int i=0;i<n;++i)
                    a[i]=t[i];
            build(0,n-1,0);
    }
     
    int Query(int l, int r){
            if(l==r)return a[l];
            int x=__builtin_ctz(mask[l]^mask[r]);
            return Secret(res[x][l],res[x][r]);
    }
#Verdict Execution timeMemoryGrader output
Fetching results...