180932025-09-29 14:14:36algoproMekk Mester munkái (50 pont)cpp17Accepted 50/5043ms2224 KiB
// UUID: 84d15bad-088e-411b-8e6c-eeebce521dd4
#include <bits/stdc++.h>
using namespace std;

struct Job {
    int k, v, id;
};

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int N, H;
    cin >> N >> H;
    vector<Job> jobs(N);
    for (int i=0;i<N;i++) {
        cin >> jobs[i].k >> jobs[i].v;
        jobs[i].id = i+1;
    }

    sort(jobs.begin(), jobs.end(), [](auto &a, auto &b){
        if (a.v == b.v) return a.k < b.k;
        return a.v < b.v;
    });

    int end1 = 0, end2 = 0;
    vector<int> mester, fiu;

    for (auto &job : jobs) {
        int s = job.k, e = job.v, id = job.id;
        if (s > end1 && s > end2) {
            // mindkettőhöz jó, annak adjuk aki később végzett
            if (end1 > end2) {
                mester.push_back(id);
                end1 = e;
            } else {
                fiu.push_back(id);
                end2 = e;
            }
        } else if (s > end1) {
            mester.push_back(id);
            end1 = e;
        } else if (s > end2) {
            fiu.push_back(id);
            end2 = e;
        }
    }

    cout << mester.size() << " " << fiu.size() << "\n";
    for (int x : mester) cout << x << " ";
    cout << "\n";
    for (int x : fiu) cout << x << " ";
    cout << "\n";
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/04ms316 KiB
3Accepted1/11ms316 KiB
4Accepted1/11ms316 KiB
5Accepted2/21ms316 KiB
6Accepted2/21ms336 KiB
7Accepted2/21ms360 KiB
8Accepted2/21ms316 KiB
9Accepted3/31ms316 KiB
10Accepted1/11ms316 KiB
11Accepted1/11ms316 KiB
12Accepted2/21ms316 KiB
13Accepted2/21ms316 KiB
14Accepted2/21ms316 KiB
15Accepted2/21ms436 KiB
16Accepted3/31ms316 KiB
17Accepted2/235ms1608 KiB
18Accepted2/235ms1608 KiB
19Accepted4/435ms1816 KiB
20Accepted4/435ms1608 KiB
21Accepted4/437ms1588 KiB
22Accepted4/437ms1780 KiB
23Accepted4/443ms2224 KiB