#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct ugy {
int ind, l, r;
ugy() {
ind = l = r = 0;
}
};
int m, n, nxt = 1, nxt2 = 1, mxi = 0, mxi2 = 0, i = 1;
vector <ugy> v;
vector <int> ans;
bool R(ugy a, ugy b) {
return (a.l < b.l ? true : false);
}
void get_mxi() {
if (v[i].r > v[mxi2].r) mxi2 = i;
if (v[mxi].r < v[mxi2].r) swap(mxi, mxi2);
}
int main()
{
cin >> m >> n;
v.resize(n + 2, ugy());
for (int i = 1; i <= n; i++) {
v[i].ind = i;
cin >> v[i].l >> v[i].r;
}
v[n + 1].l = v[n + 1].r = 1e9;
sort(v.begin(), v.end(), R);
while (nxt <= m) {
for (; v[i].l <= nxt; i++) get_mxi();
if (v[mxi].r < nxt) { cout << 0; return 0; }
ans.push_back(v[mxi].ind); nxt = v[mxi].r + 1;
if (nxt > nxt2) swap(nxt, nxt2);
mxi = mxi2; mxi2 = 0;
}
cout << ans.size() << endl;
for (int a : ans) cout << a << " ";
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 40/40 | ||||||
1 | Elfogadva | 0/0 | 3ms | 1876 KiB | |||
2 | Elfogadva | 0/0 | 6ms | 2304 KiB | |||
3 | Elfogadva | 2/2 | 3ms | 2332 KiB | |||
4 | Elfogadva | 2/2 | 3ms | 2572 KiB | |||
5 | Elfogadva | 2/2 | 3ms | 2716 KiB | |||
6 | Elfogadva | 2/2 | 3ms | 2828 KiB | |||
7 | Elfogadva | 2/2 | 3ms | 2960 KiB | |||
8 | Elfogadva | 2/2 | 3ms | 3076 KiB | |||
9 | Elfogadva | 2/2 | 3ms | 3252 KiB | |||
10 | Elfogadva | 2/2 | 3ms | 3464 KiB | |||
11 | Elfogadva | 2/2 | 3ms | 3544 KiB | |||
12 | Elfogadva | 1/1 | 4ms | 3684 KiB | |||
13 | Elfogadva | 2/2 | 4ms | 3772 KiB | |||
14 | Elfogadva | 2/2 | 4ms | 3784 KiB | |||
15 | Elfogadva | 2/2 | 6ms | 3792 KiB | |||
16 | Elfogadva | 3/3 | 10ms | 4052 KiB | |||
17 | Elfogadva | 3/3 | 8ms | 4124 KiB | |||
18 | Elfogadva | 3/3 | 10ms | 4272 KiB | |||
19 | Elfogadva | 3/3 | 10ms | 4232 KiB | |||
20 | Elfogadva | 3/3 | 10ms | 4508 KiB |