// noi 2023 final round
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define vi vector<long long>
#define all(x) x.begin(), x.end()
#define endl "\n"
#define pr pair<ll, ll>
#define ff first
#define ss second
void solution();
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
solution();
return 0;
}
void solution() {
ll n, m, q; cin >> n >> m >> q;
vector<pr> tasks(m);
for (int i = 0; i < m; i++) {
cin >> tasks[i].ff >> tasks[i].ss;
}
vector<pr> qw(q);
for (int i = 0; i < q; i++) {
cin >> qw[i].ff;
qw[i].ss = i;
}
sort(all(qw));
vi diff(q+2);
vi a(n+1);
ll day = 1;
for (auto [l, r] : tasks) {
for (; l <= r; l++) {
if (a[l] != 0) {
ll k = day - a[l] - 1;
ll d = -1;
ll x = 0, y = q-1;
while (x <= y) {
ll mid = (x + y)/2;
if (qw[mid].ff <= k) {
x = mid+1;
d = mid;
} else {
y = mid-1;
}
}
if (d != -1) {
diff[0]++;
diff[d+1]--;
}
}
a[l] = day;
day++;
}
}
for (int i = 1; i < q; i++) diff[i] += diff[i-1];
vi ans(q);
for (int i = 0; i < q; i++) {
ans[qw[i].ss] = diff[i];
}
for (auto val : ans) cout << val << " ";
cout << endl;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |