8340 | 2024. 01. 14 19:23:10 | anon | Tanúk (45 pont) | cpp17 | Elfogadva 45/45 | 120ms | 20224 KiB |
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define FastIO ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
using namespace std;
typedef long long ll;
int main() {
FastIO;
bool flag;
ll i, j, mh, N, H, K;
cin >> N >> H >> K;
vector<ll> tss(K);
vector<array<ll, 2>> guests(N);
for(i = 0; i < K; i++)
cin >> tss[i];
for(i = 0; i < N; i++)
cin >> guests[i][0] >> guests[i][1];
sort(all(tss));
vector<array<vector<ll>, 2>> eps(H + 1);
for(i = 0; i < N; i++) {
for(j = 0; j < 2; j++)
eps[guests[i][j]][j].push_back(i);
}
unordered_set<ll> here;
vector<bool> bad_guests(N, false);
if(N <= 80000) {
fill(all(bad_guests), true);
j = 0;
for(i = 1; i <= H && j < K; i++) {
for(const auto &x : eps[i][0])
here.insert(x);
if(i == tss[j]) {
for(const auto &x : here)
bad_guests[x] = false;
j++;
}
for(const auto &x : eps[i][1])
here.erase(x);
}
here.clear();
}
unordered_set<ll> lc;
vector<ll> ans;
j = 0;
for(i = 1; i <= H; i++) {
for(const auto &x : eps[i][0]) {
if(!bad_guests[x])
here.insert(x);
}
if(j < K && i == tss[j]) {
if(ans.empty())
lc = here;
else {
for(const auto &x : here) {
if(guests[ans.back()][1] < guests[x][0])
lc.insert(x);
}
}
j++;
}
flag = !lc.empty();
if(flag) {
flag = false;
for(const auto &x : eps[i][1]) {
if(lc.find(x) != lc.end()) {
flag = true;
break;
}
}
}
if(flag) {
mh = *(here.begin());
for(const auto &x : here) {
if(guests[mh][1] < guests[x][1])
mh = x;
}
ans.push_back(mh);
j = upper_bound(all(tss), guests[mh][1]) - tss.begin();
lc.clear();
}
for(const auto &x : eps[i][1]) {
if(!bad_guests[x])
here.erase(x);
}
}
cout << ans.size() << '\n';
for(const auto &x : ans)
cout << x + 1 << ' ';
cout << '\n';
return 0;
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 45/45 | ||||||
1 | Elfogadva | 0/0 | 3ms | 1824 KiB | |||
2 | Elfogadva | 0/0 | 43ms | 12484 KiB | |||
3 | Elfogadva | 2/2 | 32ms | 12444 KiB | |||
4 | Elfogadva | 2/2 | 3ms | 3040 KiB | |||
5 | Elfogadva | 2/2 | 3ms | 2608 KiB | |||
6 | Elfogadva | 2/2 | 4ms | 3260 KiB | |||
7 | Elfogadva | 2/2 | 4ms | 3356 KiB | |||
8 | Elfogadva | 2/2 | 4ms | 3304 KiB | |||
9 | Elfogadva | 2/2 | 6ms | 7196 KiB | |||
10 | Elfogadva | 2/2 | 4ms | 4680 KiB | |||
11 | Elfogadva | 2/2 | 7ms | 7768 KiB | |||
12 | Elfogadva | 2/2 | 8ms | 8168 KiB | |||
13 | Elfogadva | 2/2 | 9ms | 8252 KiB | |||
14 | Elfogadva | 2/2 | 8ms | 5848 KiB | |||
15 | Elfogadva | 2/2 | 13ms | 6364 KiB | |||
16 | Elfogadva | 2/2 | 13ms | 9728 KiB | |||
17 | Elfogadva | 2/2 | 54ms | 14632 KiB | |||
18 | Elfogadva | 2/2 | 71ms | 17836 KiB | |||
19 | Elfogadva | 2/2 | 74ms | 15408 KiB | |||
20 | Elfogadva | 2/2 | 82ms | 15740 KiB | |||
21 | Elfogadva | 2/2 | 72ms | 19040 KiB | |||
22 | Elfogadva | 2/2 | 86ms | 19428 KiB | |||
23 | Elfogadva | 2/2 | 72ms | 19532 KiB | |||
24 | Elfogadva | 3/3 | 120ms | 20224 KiB |