Submission #1214761

#TimeUsernameProblemLanguageResultExecution timeMemory
1214761dosts송신탑 (IOI22_towers)C++20
0 / 100
4045 ms1560 KiB
#include "towers.h"
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")
//#define int long long
#define pii pair<int,int>
#define vi vector<int>
#define ff first
#define ss second
#define sp << " " <<
#define all(x) x.begin(),x.end()
#define big(x) ((int)(x.size()))
using namespace std;
const int MOD = 1e9+7, LIM = 1e6+1, inf = 2e9;

int sel = 0;
int len;
vi h;
void init(int N, std::vector<int> H) {
  len = N;
  h = H;
}

int dnq(int L,int R,int D,int ban = inf) {
  int mx = -1,pick = -1;
  for (int i = L;i<=R;i++) {
    if (h[i] > ban) continue;
    if (h[i] > mx) {
      mx = h[i],pick = i;
    }
  }
  if (pick == -1) return 0;
  int sol = dnq(L,pick-1,D,mx-D),sag = dnq(pick+1,R,D,mx-D);
  return max({dnq(L,pick-1,D,ban),dnq(pick+1,R,D,ban),max(1,sol+sag)});
} 

int max_towers(int L, int R, int D) {
  return dnq(L,R,D);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...