3297 2023. 02. 24 15:04:42 zsombor Ügyelet cpp17 Elfogadva 40/40 10ms 4508 KiB
#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