226602026-01-15 13:45:24BitProMekk Mester munkái (50 pont)cpp17Hibás válasz 0/5098ms3240 KiB
#include <bits/stdc++.h>
using namespace std;

struct munka {
    int kezdet, veg, sorsz;
};

vector<munka> mester, fia, osszmunka;
int n, h;

bool cmp(munka a, munka b) {
    if (a.veg != b.veg) return a.veg < b.veg;
    return a.kezdet < b.kezdet;
}

void beolvaso() {
    cin >> n >> h;
    for (int i = 1; i <= n; i++) {
        munka m;
        cin >> m.kezdet >> m.veg;
        m.sorsz = i;
        osszmunka.push_back(m);
    }
    sort(osszmunka.begin(), osszmunka.end(), cmp);
}

void algo() {
    int vegM = 0, vegF = 0;   // mikor szabadul fel legközelebb
    for (int i = 0; i < osszmunka.size(); i++) {
        munka m = osszmunka[i];

        bool mesterSzabad = vegM < m.kezdet;
        bool fiaSzabad    = vegF < m.kezdet;

        if (!mesterSzabad && !fiaSzabad) {
            continue; // egyik sem szabad
        }

        if (mesterSzabad && fiaSzabad) {
            // annak adjuk, aki KÉSŐBB szabadult fel
            if (vegM > vegF) {
                mester.push_back(m);
                vegM = m.veg;
            } else {
                fia.push_back(m);
                vegF = m.veg;
            }
        }
        else if (mesterSzabad) {
            mester.push_back(m);
            vegM = m.veg;
        }
        else {
            fia.push_back(m);
            vegF = m.veg;
        }
    }
}

bool sorsort(munka a, munka b) {
    return a.sorsz < b.sorsz;
}

int main() {
    beolvaso();
    algo();

    cout << mester.size() << " " << fia.size() << "\n";

    sort(mester.begin(), mester.end(), sorsort);
    sort(fia.begin(), fia.end(), sorsort);

    for (auto m : mester) cout << m.sorsz << " ";
    cout << "\n";
    for (auto m : fia) cout << m.sorsz << " ";

    return 0;
}

RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/50
1Elfogadva0/01ms316 KiB
2Hibás válasz0/08ms564 KiB
3Hibás válasz0/11ms316 KiB
4Hibás válasz0/11ms316 KiB
5Hibás válasz0/21ms316 KiB
6Hibás válasz0/21ms316 KiB
7Hibás válasz0/21ms316 KiB
8Hibás válasz0/21ms500 KiB
9Hibás válasz0/32ms316 KiB
10Hibás válasz0/12ms428 KiB
11Hibás válasz0/12ms500 KiB
12Hibás válasz0/22ms316 KiB
13Hibás válasz0/22ms500 KiB
14Hibás válasz0/22ms508 KiB
15Hibás válasz0/22ms316 KiB
16Hibás válasz0/32ms316 KiB
17Hibás válasz0/282ms1964 KiB
18Hibás válasz0/282ms1912 KiB
19Hibás válasz0/482ms2008 KiB
20Hibás válasz0/482ms1988 KiB
21Hibás válasz0/483ms1964 KiB
22Hibás válasz0/487ms1964 KiB
23Hibás válasz0/498ms3240 KiB