151142025-02-13 08:47:10ercseferencÓvodacpp17Hibás válasz 8/50136ms4400 KiB
#include <bits/stdc++.h>
using namespace std;
struct szerep{int kard,meret=0; bool van=0;};
struct gyerek{int szer,sir,kap,ind; bool vid=0;};
bool has(gyerek n, gyerek m){
    return n.sir>m.sir;}
bool has2(gyerek n, gyerek m){
    return n.ind<m.ind;}
int main()
{
    //ifstream f("szamok.txt");
    int n,m; cin>>n>>m;
    vector<szerep>b(m+1); vector<gyerek>a(n+1);
    for(int i=1; i<=m; i++){cin>>b[i].kard;}
    for(int i=1; i<=n; i++){cin>>a[i].szer; a[i].ind=i;}
    for(int i=1; i<=n; i++){cin>>a[i].sir;}
    sort(a.begin()+1,a.end(),has);
    //for(int i=1; i<=n; i++){cout<<a[i].sir<<" ";}
    vector<int>sirok,ures;
    for(int i=1; i<=n; i++){
        if(b[a[i].szer].meret<b[a[i].szer].kard){
            b[a[i].szer].meret++;
            b[a[i].szer].van=1;
            a[i].kap=a[i].szer;
            a[i].vid=1;}
        else sirok.push_back(i);}
    for(int i=1; i<=m; i++){
        if(!b[i].van)ures.push_back(i);}
    int k=0; bool mindtele=0;
    for(int i=0; i<sirok.size(); i++){
        if(b[ures.size()-1].van==1)mindtele=1;
        if(mindtele){k=0;
            while(b[k].meret=b[k].kard)k++;}
        a[sirok[i]].kap=ures[k];
        b[ures[k]].van=1;
        k++;}
    ures.clear();
    for(int i=1; i<=m; i++){
        if(!b[i].van)ures.push_back(i);}
    k=n;
    for(int i=0; i<ures.size(); i++){
        while(!(a[k].vid&& b[a[k].kap].meret!=1)){
            k--;}
        sirok.push_back(k);
        a[k].vid=0;
        a[k].kap=ures[i];
        k--;}
    int s=0;
    for(int i=0; i<sirok.size(); i++){s+=a[sirok[i]].sir;}
    cout<<s<<endl;
    sort(a.begin()+1, a.end(),has2);
    for(int i=1; i<=n; i++){cout<<a[i].kap<<" ";}
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base8/50
1Elfogadva0/01ms316 KiB
2Hibás válasz0/06ms316 KiB
3Futási hiba0/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Futási hiba0/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Hibás válasz0/21ms316 KiB
8Futási hiba0/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Elfogadva2/21ms316 KiB
11Futási hiba0/21ms316 KiB
12Hibás válasz0/21ms316 KiB
13Hibás válasz0/22ms316 KiB
14Futási hiba0/32ms316 KiB
15Hibás válasz0/314ms728 KiB
16Futási hiba0/326ms1444 KiB
17Futási hiba0/335ms1340 KiB
18Hibás válasz0/375ms2612 KiB
19Futási hiba0/367ms2100 KiB
20Futási hiba0/371ms2612 KiB
21Hibás válasz0/3112ms3060 KiB
22Hibás válasz0/4136ms4400 KiB