#include<bits/stdc++.h>
#define taskname "A"
using namespace std;
template<class T>void maximize(T& a, T b){
if(a < b){
a = b;
}
}
const int lim = 25e4 + 5;
int n, q, h[lim], a[lim], b[lim];
namespace sub1{
void solve(){
for(int _ = 0; _ < q; _++){
int l, r, ans = -1;
cin >> l >> r;
for(int i = l; i < r; i++){
for(int j = r; j > i; j--){
int d = j - i;
if(max(a[i], a[j]) <= d && min(b[i], b[j]) >= d){
maximize(ans, abs(h[i] - h[j]));
}
}
}
cout << ans << "\n";
}
}
}
namespace sub2{
void solve(){
vector<vector<int>>f(n + 1, vector<int>(n + 1, -1));
for(int i = 1; i < n; i++){
for(int l = 1; true; l++){
int r = l + i;
f[l][r] = max({f[l][r - 1], f[l + 1][r], max(a[l], a[r]) <= i && min(b[l], b[r]) >= i ? abs(h[l] - h[r]) : -1});
if(r == n){
break;
}
}
}
for(int _ = 0; _ < q; _++){
int l, r;
cin >> l >> r;
cout << f[l][r] << "\n";
}
}
}
namespace sub34{
void solve(){
}
}
int main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if(fopen(taskname".inp", "r")){
freopen(taskname".inp", "r", stdin);
}
cin >> n;
for(int i = 1; i <= n; i++){
cin >> h[i] >> a[i] >> b[i];
}
cin >> q;
if(max(n, q) <= 300){
sub1::solve();
}
else if(n <= 2000){
sub2::solve();
}
else{
sub34::solve();
}
}
Compilation message (stderr)
antennas.cpp: In function 'int main()':
antennas.cpp:55:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
55 | freopen(taskname".inp", "r", stdin);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 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... |