# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1227121 | LeonidCuk | 송신탑 (IOI22_towers) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
#include "towers.h"
using namespace std;
vector<int>v;
int n;
void init(int N, int H[])
{
n=N;
v.resize(n);
for(int i=0;i<n;i++)
{
v[i]=H[i];
}
}
int dvq(int l,int r,int k,int d)
{
if(r<l)return 0;
if(r==l)
{
if(v[l]<=k)return 1;
else return 0;
}
int t=-1,tmax=-1,tmin=0;;
for(int i=l;i<=r;i++)
{
if(tmax<v[i])
{
t=i;
tmax=i;
}
}
return dvq(l,t-1,tmax-d,d)+dvq(t+1,r,tmax-d,d);
}
int max_towers(int l,int r,int d)
{
return dvq(l,r,2e9,d);
}