Submission #1315077

#TimeUsernameProblemLanguageResultExecution timeMemory
1315077thaibaotran555Inspections (NOI23_inspections)C++20
29 / 100
2094 ms7952 KiB
///TRAN THAI BAO :3

#include <iostream>
#include <cstdio>
#include <map>
#include <algorithm>

using namespace std;

#define maxN 200007

typedef pair<long long, int> pii;

int n, m, q;
int lastT[maxN] = {0};
map<long long, long long>cnt;
long long ans[maxN] = {0};

int curT = 0;

pii que[maxN];

bool cmp1(pii x, pii y)
{
    return x.first > y.first;
}

void doOp(int l, int r)
{
    for(int i = l; i <= r; i++)
    {
        ++curT;
        if(lastT[i] != 0)
            cnt[curT-lastT[i]-1]++;
        lastT[i] = curT;
    }
    cnt[-1] = 1;
}

void solve()
{
    cin >> n >> m >> q;
    int l, r;
    for(int i = 0; i < m; i++)
    {
        cin >> l >> r;
        doOp(l, r);
    }
    for(int i = 1; i <= q; i++)
    {
        cin >> que[i].first;
        que[i].second = i;
    }
    sort(que+1, que+q+1, cmp1);
    long long curAns = 0;
    map<long long, long long>::iterator it = prev(cnt.end());
    for(int i = 1; i <= q; i++)
    {
        while(it->first >= que[i].first)
        {
            curAns += it->second;
            it--;
        }
        ans[que[i].second] = curAns;
    }
    for(int i = 1; i <= q; i++)
        cout << ans[i] << " ";
}

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    solve();
    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...
#Verdict Execution timeMemoryGrader output
Fetching results...