Submission #1292282

#TimeUsernameProblemLanguageResultExecution timeMemory
1292282eyadoozSecret (JOI14_secret)C++20
0 / 100
331 ms4560 KiB
#include<bits/stdc++.h>
#include"secret.h"
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

#define pb push_back
#define all(x) (x).begin(), (x).end()
#define sz(x) (int) (x).size()
#define endl '\n'

ll s[30][100005], a[100005], n=0;
void solve(int l, int r, int lvl) 
{
    if(l>r) return;
    if(l==r) {s[lvl][l]=a[l];return;}
    int mid=(l+r)/2;
    s[lvl][mid]=a[mid];
    for(int i=mid+1;i <= r;i++) s[lvl][i]=Secret(s[lvl][i-1], a[i]);
    for(int i=mid-1;i >= l;i--) s[lvl][i]=Secret(s[lvl][i+1], a[i]);
    solve(l, mid, lvl+1);
    solve(mid+1, r, lvl+1);
}
void Init(int N, int A[])
{
    n=N;
    for(int i = 0;i < N;i++) a[i]=A[i];
    solve(0, N-1, 0);
}
int Query(int L, int R)
{
    L--, R--;
    int mid=n/2;
    int l=0, r=n-1, lvl=0;
    while(mid>R&&mid<L) 
    {
        int md=(l+r)/2;
        if(md>R) r=md;
        else l=md+1;
        mid=l;
        lvl++;
    }
    return Secret(s[lvl][L], s[lvl][R]);
}
#Verdict Execution timeMemoryGrader output
Fetching results...