Submission #1297577

#TimeUsernameProblemLanguageResultExecution timeMemory
1297577samarthkulkarniInspections (NOI23_inspections)C++20
29 / 100
2097 ms7432 KiB
// 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 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...