Submission #1170046

#TimeUsernameProblemLanguageResultExecution timeMemory
1170046anteknneTwo Antennas (JOI19_antennas)C++20
13 / 100
71 ms45388 KiB
#include<bits/stdc++.h> using namespace std; const int MAXN = 2000; int h[MAXN]; int a[MAXN]; int b[MAXN]; int t[MAXN][MAXN]; int makssuf[MAXN][MAXN]; int wyn[MAXN][MAXN]; int main () { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; for (int i = 0; i < n; i ++) { cin >> h[i] >> a[i] >> b[i]; } for (int i = 0; i < n; i ++) { for (int j = 0; j < n; j ++) { if (i == j) { t[i][j] = -1; continue; } bool ok1 = false, ok2 = false; if (((i + a[i]) <= j && j <= (i + b[i])) || ((i - b[i]) <= j && j <= (i - a[i]))) { ok1 = true; } if (((j + a[j]) <= i && i <= (j + b[j])) || ((j - b[j]) <= i && i <= (j - a[j]))) { ok2 = true; } if (ok1 && ok2) { t[i][j] = abs(h[i] - h[j]); } else { t[i][j] = -1; } //cout << i << " " << j << ": " << t[i][j] << "\n"; } } //cout << "==="; for (int i = 0; i < n; i ++) { makssuf[i][i] = t[i][i]; for (int j = i - 1; j >= 0; j --) { makssuf[i][j] = max(makssuf[i][j + 1], t[i][j]); //cout << i << " " << j << ": " << makssuf[i][j] << "\n"; } } for (int i = 0; i < n; i ++) { wyn[i][i] = -1; for (int j = i + 1; j < n; j ++) { wyn[i][j] = max(wyn[i][j - 1], makssuf[j][i]); } } int q, l, r; cin >> q; while (q --) { cin >> l >> r; l --; r --; cout << wyn[l][r] << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...