Submission #1344667

#TimeUsernameProblemLanguageResultExecution timeMemory
1344667Godgift42Secret (JOI14_secret)C++20
30 / 100
336 ms4424 KiB
#include "secret.h"
using namespace std;
#include <bits/stdc++.h>


vector<int> st;
vector<int> a;
int n;
void build(int v, int tl, int tr){
  if(tl==tr)st[v]=a[tl];
  else{
    int tm=(tl+tr)/2;
    build(v*2,tl,tm);build(v*2+1,tm+1,tr);
    st[v]=Secret(st[v*2],st[v*2+1]);
  }
}

int sm(int v, int tl, int tr, int l, int r){
  if(l>r)return -1;
  if(tl==l and tr==r)return st[v];
  int tm=(tl+tr)/2;
  int x1=sm(v*2,tl,tm,l,min(r,tm));
  int x2=sm(v*2+1,tm+1,tr,max(l,tm+1),r);
  if(x1!=-1 and x2!=-1)return Secret(x1,x2);
  if(x1!=-1)return x1;
  return x2;
}

void Init(int N, int A[]) {
  n=N;
  a.resize(n);
  for(int i=0;i<n;i++)a[i]=A[i];
  st.resize(4*n);
  build(1,0,n-1);
}

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