Submission #1313413

#TimeUsernameProblemLanguageResultExecution timeMemory
1313413hssaan_arifSecret (JOI14_secret)C++20
100 / 100
379 ms8288 KiB

// #include <bits/stdc++.h>
#include "secret.h"
#include <iostream>
#include <cmath>
#include <algorithm>
#include <map>
#include <unordered_map>
#include <vector>
#include <iomanip>
#include <string>
#include <queue>
#include <set>
#include <deque>
using namespace std;

#define endl "\n"
#define pb push_back
// #define int long long
#define fi first
#define se second

const int N = 1e3 + 5, M = 1e9 + 7, LG = 10;

int n , A[N] , sp[N][N] , B[N];

void cal(int s , int e){

    if (s+1 == e){
        sp[s][s] = A[s];
        return;
    }

    int mid = (s+e)/2;

    sp[mid][mid-1] = A[mid-1];

    for (int i=mid-2 ; i>=s ; i--){
        sp[mid][i] = Secret(A[i] , sp[mid][i+1]);
    }

    sp[mid][mid] = A[mid];

    for (int i=mid+1 ; i<e ; i++){
        sp[mid][i] = Secret(sp[mid][i-1] , A[i]);
    }

    cal(s,mid);
    cal(mid,e);
}

int ans(int s , int e , int l , int r){
    if (s+1 == e){
        return A[s];
    }
    int mid = (s+e)/2;

    if (r < mid){
        return ans(s,mid,l,r);
    }else if (mid <= l){
        return ans(mid , e,l,r);
    }else{
        return Secret(sp[mid][l] , sp[mid][r]);
    }
}

void Init(int N, int P[]) {
    n = N;

    for (int i=0 ; i<n ; i++){
        A[i] = P[i];
    }

    cal(0 , n);
}

int Query(int L, int R) {
  return ans(0 , n , L , R);
}
#Verdict Execution timeMemoryGrader output
Fetching results...