#include <bits/stdc++.h>
using namespace std;
int N; // liczba anten
int Q; // liczba zapytań
vector<pair<int, pair<int, int>>> antennas; // < H — wysokość anteny, < A, B — przedział odległości, z którymi może się komunikować > >
int communication_cost(int i, int j) {
const int H1 = antennas[i].first;
const int A1 = antennas[i].second.first;
const int B1 = antennas[i].second.second;
const int H2 = antennas[j].first;
const int A2 = antennas[j].second.first;
const int B2 = antennas[j].second.second;
int dist = abs(i - j);
if (A1 <= dist && dist <= B1 && A2 <= dist && dist <= B2) return abs(H1 - H2);
return -1;
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> N;
for (int i=0; i<N; i++) {
int H, A, B;
cin >> H >> A >> B;
antennas.push_back({H, { A, B } });
}
// vector<vector<int>> cost(N, vector<int>(N, -1));
// for (int i=0; i<N-1; i++) {
// for (int j=i+1; j<N; j++) {
// cost[i][j] = communication_cost(i, j);
// cost[j][i] = cost[i][j];
// }
// }
cin >> Q;
for (int i=0; i<Q; i++) {
int L, R;
cin >> L >> R;
L--, R--;
int max_cost = -1;
for (int j=L; j<R; j++) for (int k=j+1; k<=R; k++) max_cost = max(max_cost, communication_cost(j, k));
cout << max_cost << '\n';
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |