31892023-02-22 09:30:17sztomiÜgyfélszolgálat (45)cpp11Hibás válasz 22/4552ms7596 KiB
#include <bits/stdc++.h>

using namespace std;

typedef pair<int, int> pii;

struct comp{
    bool operator()(pii a, pii b){
        if(a.first == b.first) return a.second > b.second;
        return a.first > b.first;
    }
};

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

    int m, n;
    cin >> m >> n;
    // egy priority_queueban taroljuk a pultokat
    // {elso szabad idopont, pult szama}
    priority_queue<pii, vector<pii>, comp> pultok;
    for(int i = 1; i <= m; i++){
        pultok.push({0, i});
    }



    int nap_vege = 0;
    int legtobb_varas = 0;
    vector<int> kiszolgalo_pult(n);
    // {idopont, nyit vagy zar}
    vector<pii> varakozok;

    int erkezes, hossz;
    pii pult;
    int vart, vegzett;
    for(int i = 0; i < n; i++){
        cin >> erkezes >> hossz;

        // a legkorabban szabadon levo pulthoz megyunk
        pult = pultok.top();
        pultok.pop();

        vart = max(0, pult.first-erkezes);
        vegzett = erkezes + vart + hossz;

        nap_vege = max(nap_vege, vegzett);
        legtobb_varas = max(legtobb_varas, vart);
        kiszolgalo_pult[i] = pult.second;

        if(vart > 0){
            varakozok.push_back({erkezes, 1});
            varakozok.push_back({erkezes+vart, -1});
        }
        pultok.push({vegzett, pult.second});
    }

    int legtobben_egyszerre_varok = 0;
    sort(varakozok.begin(), varakozok.end());
    varakozok.push_back({-1, -1});
    int epp_varnak = 0;
    for(int i = 0; i < varakozok.size()-1; i++){
        epp_varnak += varakozok[i].second;
        if(varakozok[i].first != varakozok[i+1].first){
            legtobben_egyszerre_varok = max(legtobben_egyszerre_varok, epp_varnak);
        }
    }


    cout << nap_vege << " " << legtobb_varas << " " << legtobben_egyszerre_varok << "\n";
    for(int x : kiszolgalo_pult){
        cout << x << "\n";
    }

}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base22/45
1Elfogadva0/03ms1696 KiB
2Hibás válasz0/028ms4520 KiB
3Részben helyes1/23ms2080 KiB
4Hibás válasz0/23ms2476 KiB
5Elfogadva2/23ms2552 KiB
6Részben helyes1/23ms2872 KiB
7Részben helyes1/23ms3092 KiB
8Részben helyes1/241ms5060 KiB
9Részben helyes1/246ms7060 KiB
10Részben helyes1/243ms5284 KiB
11Részben helyes1/241ms5480 KiB
12Részben helyes1/241ms5500 KiB
13Részben helyes1/252ms7284 KiB
14Részben helyes1/241ms5724 KiB
15Részben helyes1/248ms7596 KiB
16Részben helyes1/246ms7548 KiB
17Részben helyes1/250ms7504 KiB
18Részben helyes1/248ms7496 KiB
19Részben helyes1/250ms5976 KiB
20Részben helyes1/350ms6108 KiB
21Részben helyes2/443ms6012 KiB
22Részben helyes2/443ms5976 KiB