237282026-01-28 12:31:48domdiridomdidomMekk Mester munkái (50 pont)cpp17Hibás válasz 0/50699ms2092 KiB
#include <iostream>
#include <utility>
#include <vector>
#include <algorithm>

using std::pair, std::vector;

bool feltetel(pair<int, pair<int, int>> a, pair<int, pair<int, int>> b) {
    if(a.second.second == b.second.second)
        return a.second.first > b.second.first;
    return a.second.second > b.second.second;
}

struct Dolgozo {
    vector<int> elvegzett;
    vector<bool> occupied;

    Dolgozo(int n, int h) {
        occupied.resize(h, 0);
    }
    bool free(pair<int, int> j) {
        for(int i = j.first; i <= j.second; i++)
            if(occupied[i])
                return 0;
        return 1;
    }
    void occ(pair<int, int> j) {
        for(int i = j.first; i <= j.second; i++)
            occupied[i] = 1;
    }
};

int main() {
    int n, h;
    std::cin >> n >> h; // n megrendelés, h napra
    vector<pair<int, pair<int, int>>> munkak;
    Dolgozo apa(n, h), fiu(n, h);
    for(int i = 0; i < n; i++) {
        int v, k;
        std::cin >> v >> k; v--; k--;
        munkak.push_back({i, {v, k}});
    }
    std::sort(munkak.begin(), munkak.end(), feltetel);
    
    for(int i = 0; i < n; i++) {
        pair<int, pair<int, int>> currJob = munkak[i];
        if (apa.free(currJob.second)) {
            apa.occ(currJob.second);
            apa.elvegzett.push_back(currJob.first);
        }
        else if(fiu.free(currJob.second)) {
            fiu.occ(currJob.second);
            fiu.elvegzett.push_back(currJob.first);
        }
    }


    std::cout << apa.elvegzett.size() << ' ' << fiu.elvegzett.size() << '\n';
    for(int i = apa.elvegzett.size() - 1; i >= 0; i--)
        std::cout << apa.elvegzett[i] << ' ';
    std::cout << '\n';
    for(int i = fiu.elvegzett.size() - 1; i >= 0; i--)
        std::cout << fiu.elvegzett[i] << ' ';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/50
1Hibás válasz0/01ms512 KiB
2Hibás válasz0/061ms564 KiB
3Hibás válasz0/18ms316 KiB
4Hibás válasz0/113ms316 KiB
5Hibás válasz0/29ms428 KiB
6Hibás válasz0/29ms428 KiB
7Hibás válasz0/26ms428 KiB
8Hibás válasz0/23ms316 KiB
9Hibás válasz0/31ms316 KiB
10Hibás válasz0/178ms448 KiB
11Hibás válasz0/190ms544 KiB
12Hibás válasz0/275ms444 KiB
13Hibás válasz0/257ms316 KiB
14Hibás válasz0/246ms508 KiB
15Hibás válasz0/243ms316 KiB
16Hibás válasz0/32ms424 KiB
17Időlimit túllépés0/2699ms2080 KiB
18Időlimit túllépés0/2699ms2036 KiB
19Időlimit túllépés0/4677ms2056 KiB
20Időlimit túllépés0/4679ms1960 KiB
21Időlimit túllépés0/4689ms2092 KiB
22Időlimit túllépés0/4699ms1964 KiB
23Időlimit túllépés0/4680ms1964 KiB