제출 #1195346

#제출 시각아이디문제언어결과실행 시간메모리
1195346ByeWorld송신탑 (IOI22_towers)C++20
0 / 100
4069 ms1824 KiB
#include "towers.h"
#include <bits/stdc++.h>
#define ll long long
#define fi first 
#define se second
#define pb push_back
using namespace std;
typedef pair<ll,ll> pii;
typedef pair<ll,pii> ipii;
const int MAXN = 3e5+100;
const int LOG = 19;
const ll INF = 2e18+10;
const int INF2 = 2e9+10;
void chmx(auto &a, auto b){ a = max(a, b); }
void chmn(auto &a, auto b){ a = min(a, b); }

int n, h[MAXN], pr[MAXN];

void init(int N, std::vector<int> H) {
	n = N;
	for(int i=1; i<=n; i++){
		h[i] = H[i-1];
	}
	h[0] = h[n+1] = INF2;
	for(int i=1; i<=n; i++){
		pr[i] = pr[i-1];
		if(h[i] < h[i+1] && h[i] < h[i-1]) pr[i]++;
	}
}

int dp[MAXN];

int max_towers(int L, int R, int D) {
	int l = L+1, r = R+1, d = D;
	if(l==r || l+1==r) return 1;

	for(int i=1; i<=n; i++){
		pr[i] = pr[i-1];
		if(h[i] < h[i+1] && h[i] < h[i-1]) pr[i]++;
	}
	int ANS = pr[r-1]-pr[l];
	if(h[l] < h[l+1]) ANS++;
	if(h[r] < h[r-1]) ANS++;
	return ANS;
}
#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...