Submission #1272827

#TimeUsernameProblemLanguageResultExecution timeMemory
1272827ortsacInspections (NOI23_inspections)C++20
29 / 100
410 ms6392 KiB
#include <bits/stdc++.h>

using namespace std;

#define pii pair<int, int>
#define fr first
#define se second

const int MAXV = 5e6;
int sft[MAXV + 10];

int32_t main() {
    int n, m, q;
    cin >> n >> m >> q;
    vector<int> l(m), r(m);
    for (int i = 0; i < m; i++) {
        cin >> l[i] >> r[i];
    }
    for (int i = 1; i <= n; i++) {
        int prv = -1;
        int sum = 0;
        for (int j = 0; j < m; j++) {
            if ((l[j] <= i) && (i <= r[j])) {
                int t = (sum + i - l[j] + 1);
                if (prv != -1) {
                    sft[t - prv - 1]++;
                }
                prv = t; 
            }
            sum += (r[j] - l[j] + 1);
        }
    }
    deque<pii> ord;
    for (int i = 0; i < q; i++) {
        int s;
        cin >> s;
        ord.push_back({s, i});
    }
    sort(ord.begin(), ord.end());
    int res = 0;
    vector<int> ans(q);
    for (int i = MAXV; i >= 0; i--) {
        res += sft[i];
        while (!ord.empty() && (ord.back().fr >= i)) {
            ans[ord.back().se] = res;
            ord.pop_back();
        }
    }
    for (auto u : ans) cout << u << " ";
    cout << "\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...
#Verdict Execution timeMemoryGrader output
Fetching results...