Submission #1316830

#TimeUsernameProblemLanguageResultExecution timeMemory
1316830vaishakhvInspections (NOI23_inspections)C++20
29 / 100
2096 ms5436 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    ll n, m, q, day = 0;
    cin >> n >> m >> q;

    vector<pair<ll,ll>> lr(m);
    for (ll i = 0; i < m; i++) {
        cin >> lr[i].first >> lr[i].second;
    }

    vector<ll> last(n + 1, -1);

    vector<pair<ll,ll>> gaps;

    for (ll i = 0; i < m; i++) {
        ll li = lr[i].first, ri = lr[i].second;

        for (ll j = li; j <= ri; j++) {
            ll prev = last[j];
            last[j] = day;
            day++;

            if (prev >= 0) {
                ll g = day - prev - 2;

                // find g in gaps
                auto it = lower_bound(
                    gaps.begin(), gaps.end(),
                    make_pair(g, 0LL)
                );

                if (it != gaps.end() && it->first == g) {
                    it->second++;         
                } else {
                    gaps.insert(it, {g, 1}); 
                }
            }
        }
    }

    vector<ll> s(q);
    for (ll i = 0; i < q; i++) {
        cin >> s[i];
    }

    int F = gaps.size();
    vector<ll> suffix(F + 1, 0);
    for (int i = F - 1; i >= 0; i--) {
        suffix[i] = suffix[i + 1] + gaps[i].second;
    }

    for (ll Q = 0; Q < q; Q++) {
        auto it = lower_bound(
            gaps.begin(), gaps.end(),
            make_pair(s[Q], 0LL)
        );

        if (it == gaps.end()) {
            cout << 0;
        } else {
            ll idx = it - gaps.begin();
            cout << suffix[idx];
        }

        if (Q + 1 < q) cout << " ";
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...