155992025-02-20 21:05:50BucsMateÓvodacpp17Wrong answer 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] = {};

    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[i] == 0){
            kapott_szerep[i] = 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;
}
SubtaskSumTestVerdictTimeMemory
base28/50
1Accepted0/02ms1260 KiB
2Wrong answer0/06ms1076 KiB
3Accepted2/22ms1076 KiB
4Partially correct1/22ms1076 KiB
5Accepted2/21ms1076 KiB
6Accepted2/22ms1076 KiB
7Wrong answer0/22ms1076 KiB
8Partially correct1/21ms1076 KiB
9Accepted2/21ms1076 KiB
10Accepted2/22ms1152 KiB
11Accepted2/22ms1076 KiB
12Partially correct1/22ms1088 KiB
13Wrong answer0/22ms1088 KiB
14Accepted3/32ms1268 KiB
15Wrong answer0/312ms1332 KiB
16Wrong answer0/327ms1620 KiB
17Accepted3/337ms1844 KiB
18Wrong answer0/361ms2100 KiB
19Accepted3/368ms2532 KiB
20Accepted3/374ms2456 KiB
21Partially correct1/386ms2756 KiB
22Wrong answer0/4101ms2868 KiB