155982025-02-20 20:44:08BucsMateÓvodacpp17Hibás válasz 28/50101ms2868 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>

using namespace std;

struct Gyerek
{
    int siras;
    int pref;
    int index;
};

bool hasonlit(Gyerek a, Gyerek b)
{
    return a.siras > b.siras;
}

int main()
{
    int N, K;
    cin >> N >> K;
    int dbszerep[100001] = {};
    for(int i = 1; i <= K; i++){
        cin >> dbszerep[i];
    }
    vector<Gyerek> gyerekek(N);
    for(int i = 0; i < N; i++){
        cin >> gyerekek[i].pref;
        gyerekek[i].index = i;
    }
    for(int i = 0; i < N; i++){
        cin >> gyerekek[i].siras;
    }

    int teljes_siras = 0;
    sort(gyerekek.begin(), gyerekek.end(), hasonlit);
    int kapott_szerep[100001] = {};
    queue<int> q;

    for(int i = 0; i < N; i++){
        if(dbszerep[gyerekek[i].pref] > 0){
            dbszerep[gyerekek[i].pref]--;
            kapott_szerep[gyerekek[i].index] = gyerekek[i].pref;
        }
        else{
            teljes_siras += gyerekek[i].siras;
        }
    }
    int index_szerep = 1;
    while(dbszerep[index_szerep] == 0){
        index_szerep++;
    }
    for(int i = 0; i < N; i++){
        if(kapott_szerep[gyerekek[i].index] == 0){
            kapott_szerep[gyerekek[i].index] = index_szerep;
            dbszerep[index_szerep]--;
        }
        while(dbszerep[index_szerep] == 0){
            index_szerep++;
        }
    }

    cout << teljes_siras << endl;
    for(int i = 0; i < N; i++){
        cout << kapott_szerep[i] << " ";
    }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base28/50
1Elfogadva0/02ms1272 KiB
2Hibás válasz0/06ms1080 KiB
3Elfogadva2/22ms1076 KiB
4Részben helyes1/21ms1268 KiB
5Elfogadva2/22ms1300 KiB
6Elfogadva2/22ms1076 KiB
7Hibás válasz0/22ms1076 KiB
8Részben helyes1/22ms1076 KiB
9Elfogadva2/21ms1076 KiB
10Elfogadva2/21ms1076 KiB
11Elfogadva2/22ms1076 KiB
12Részben helyes1/21ms1056 KiB
13Hibás válasz0/22ms1076 KiB
14Elfogadva3/32ms1076 KiB
15Hibás válasz0/312ms1208 KiB
16Hibás válasz0/327ms1588 KiB
17Elfogadva3/337ms1860 KiB
18Hibás válasz0/359ms2036 KiB
19Elfogadva3/368ms2532 KiB
20Elfogadva3/375ms2464 KiB
21Részben helyes1/386ms2748 KiB
22Hibás válasz0/4101ms2868 KiB