제출 #1244168

#제출 시각아이디문제언어결과실행 시간메모리
1244168amine_aroua송신탑 (IOI22_towers)C++20
11 / 100
4075 ms2162688 KiB
#include "towers.h"

#include <bits/stdc++.h>
using namespace std;


vector<int> h;
int n;
vector<vector<int>> adj;
void init(int N, std::vector<int> H) 
{
	n = N;
	h = H;
	adj.assign(n , {});
}

int max_towers(int L, int R, int D) 
{
	for(int i = L ; i <= R ; i++)
	{
		int mx = h[i];
		for(int j = i + 1 ; j <= R ; j++)
		{
			mx = max(mx , h[j]);
			if(h[i] + D <= mx && h[j] + D <= mx)
			{
				int k = j;
				for(; k <= R;k++)
				{
					if(h[k] >= h[j] + D)
						break;
					adj[i].push_back(k);
				}
				break;
			}
		}
	}
	int ans = 0;
	vector<int> dp(n,1);
	for(int i = R ; i >= L ; i--)
	{
		for(auto j : adj[i])
		{
			dp[i] = max(dp[i] , dp[j] + 1);
		}
		ans = max(ans , dp[i]);
	}
	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...