제출 #579075

#제출 시각아이디문제언어결과실행 시간메모리
579075LucppTwo Antennas (JOI19_antennas)C++17
22 / 100
162 ms16604 KiB
#include <bits/stdc++.h>
using namespace std;
const int INF = 2e9;

struct Seg{
    vector<int> Smi, Sma;
    int cap;
    void init(int n){
        for(cap = 1; cap < n; cap *= 2);
        Smi.resize(2*cap, INF);
        Sma.resize(2*cap);
    }
    void upd(int i, int v){
        i += cap;
        if(v > 0) Smi[i] = Sma[i] = v;
        else Smi[i] = INF, Sma[i] = 0;
        while(i > 1){
            i /= 2;
            Smi[i] = min(Smi[2*i], Smi[2*i+1]);
            Sma[i] = max(Sma[2*i], Sma[2*i+1]);
        }
    }
    pair<int, int> qry(int l, int r, int a, int b, int i){
        if(l <= a && b <= r) return {Smi[i], Sma[i]};
        if(r < a || b < l) return {INF, 0};
        int m = (a+b)/2;
        auto [mi1, ma1] = qry(l, r, a, m, 2*i);
        auto [mi2, ma2] = qry(l, r, m+1, b, 2*i+1);
        return {min(mi1, mi2), max(ma1, ma2)};
    }
    pair<int, int> qry(int l, int r){return qry(l, r, 1, cap, 1);}
};

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int n, q;
    cin >> n;
    vector<int> h(n), a(n), b(n);
    for(int i = 0; i < n; i++) cin >> h[i] >> a[i] >> b[i];
    cin >> q;
    int qL, qR;
    cin >> qL >> qR;

    Seg seg;
    seg.init(n);
    vector<vector<pair<int, int>>> todo(n);
    int ans = -1;
    for(int i = 0; i < n; i++){
        for(auto [j, v] : todo[i]){
            seg.upd(j, v);
        }
        if(i+a[i]<n) todo[i+a[i]].emplace_back(i, h[i]);
        if(i+b[i]+1<n) todo[i+b[i]+1].emplace_back(i, 0);
        int l = max(0, i-b[i]);
        int r = max(-1, i-a[i]);
        if(r == -1) continue;
        auto [mi, ma] = seg.qry(l+1, r+1);
        ans = max(ans, max(h[i]-mi, ma-h[i]));
    }
    cout << ans << "\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...