Submission #1328040

#TimeUsernameProblemLanguageResultExecution timeMemory
1328040iamsazidh비밀 (JOI14_secret)C++20
100 / 100
357 ms8420 KiB
#include "secret.h"
//ᴇᴀᴄʜ ᴘᴇʀꜱᴏɴ ᴡɪʟʟ ᴏɴʟʏ ʜᴀᴠᴇ ᴡʜᴀᴛ ᴛʜᴇʏ ᴇɴᴅᴇᴀᴠᴏᴜʀᴇᴅ ᴛᴏᴡᴀʀᴅꜱ [53:39]
//Author: Sazid Hasan
#include <bits/stdc++.h>
using namespace std;

typedef long long              ll;
typedef double                 dl;
typedef vector<int>            vi;
typedef vector<vector<int>>    vii;
typedef vector<ll>             vl;
typedef vector<bool>           vb;
typedef pair<int,int>         pii;
typedef pair<ll, ll>          pll;

#define ff                first
#define ss                second
#define all(a)            a.begin(),a.end()
#define gcd(a,b)          __gcd(a,b)
#define lcm(a,b)          (a*(b/gcd(a,b)))
#define spc               " "

#ifdef ONLINE_JUDGE
    #define debarr(array)
    #define deb(x)
    #define del
#else
    #define debarr(array)  for(int w = 0; w < array.size(); w++) cerr << #array << "-" << w << " = " << array[w] << endl;
    #define deb(x)         cerr << #x << " = " << x << endl;
    #define del cerr << '\n';
#endif


const double PI =         acos(-1);
const int MOD =           1000000007;
const int inf =           (2147483647);
const int MAXN = 1010;

vii tab(MAXN, vi(MAXN, -1));
vi lgN(MAXN);

void Init(int N, int A[]) {
  for(int i = 2; i < MAXN; i++) lgN[i] = lgN[i/2] + 1;
  for(int i = 0; i < N; i++) tab[i][i] = A[i];
  int cnt = 0;
  for(int i = 1; i < N; i++){
    for(int j = 2; !((i/j)==0 && tab[0][i]!=-1); j <<= 1){
      int k = (i/j) * j;
      if(tab[k][i]==-1) tab[k][i] = Secret(tab[k][i-1], A[i]);
    }
  }

  for(int i = N-1; i>0; i--){
    for(int j = 2; 1; j <<= 1){
      int k = (((i+j-1)/j) * j) - 1;
      if(k>=N) break;
      if(k>i && tab[i][k]==-1) tab[i][k] = Secret(A[i], tab[i+1][k]);
    }
  }
  
}

int Query(int L, int R) {
  if(tab[L][R]!=-1) return tab[L][R];
  for(int i = L; i<=R ; i++){
    if(   (tab[L][i]!=-1) && (tab[i+1][R]!=-1)  ){
      return Secret(tab[L][i], tab[i+1][R]);
    }
  }
  return -1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...