Submission #1298100

#TimeUsernameProblemLanguageResultExecution timeMemory
1298100arashmemarTwo Antennas (JOI19_antennas)C++20
13 / 100
248 ms18640 KiB
#include <bits/stdc++.h>
using namespace std;

const int maxn = 2e3 + 100;

int dp[maxn][maxn];
int l[maxn], r[maxn], h[maxn];

bool in(int i, int j)
{
	int d = abs(i - j);
	return (d >= l[j] and d <= r[j]);
}

int c(int i, int j)
{
	if (in(i, j) and in(j, i))
	{
		return abs(h[i] - h[j]);
	}
	return -1;
}

int main()
{
	int n;
	cin >> n;
	for (int i = 1;i <= n;i++)
	{
		cin >> h[i] >> l[i] >> r[i];
	}

	for (int i = 1;i <= n;i++)
	{
		for (int j = 1;j <= n;j++)
		{
			dp[i][j] = -1;
		}
	}

	for (int d = 1;d < n;d++)
	{
		for (int i = 1;i <= n - d;i++)
		{
			int j = i + d;
			dp[i][j] = max(c(i, j), max(dp[i + 1][j], dp[i][j - 1]));
		}
	}
	int q;
	cin >> q;
	while (q--)
	{
		int l, r;
		cin >> l >> r;
		cout << dp[l][r] << '\n';
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...