244152026-02-11 12:59:36akososkaÓvodacpp17Hibás válasz 18/5052ms3400 KiB

#include <bits/stdc++.h>
int d[100001],e[100001],f[100001],g[100001];
bool c[100001];
using namespace std;
struct bencu{
    int jo;
    int sir;
    int poz;
}a[100001];
bool cucc(const bencu &u, const bencu &l){
    return u.sir<l.sir;
}

int main() {
	ios::sync_with_stdio(0);
    cin.tie(0);
    int n,k,b[100001];
    long long z=0,s=0;
    cin>>n>>k;
    for(int i=1;i<=k;i++){
        cin>>b[i];
    }
    for(int i=1;i<=n;i++){
        cin>>a[i].jo;
        a[i].poz=i;
        c[a[i].jo]=true;
    }
    for(int i=1;i<=k;i++){
        if(!c[i]){
            z++;
            f[z]=i;
        }
    }
    for(int i=1;i<=n;i++){
        cin>>a[i].sir;
    }
    sort(a+1,a+n+1,cucc);
    for(int i=n;i>=1;i--){
        if(b[a[i].jo]!=0){
            b[a[i].jo]--;
            d[a[i].jo]++;
            e[a[i].poz]=a[i].jo;
        }
        else{
            s=s+a[i].sir;
            e[a[i].poz]=f[z];
            z--;
        }
    }
    int i=1;
    while(z>0 || i>n){
        if(d[a[i].jo]>=2){
            e[a[i].poz]=a[i].jo;
            z--;
            s=s+a[i].sir;
        }
        i++;
    }
    cout<<s<<endl;
    for(i=1;i<=n;i++){
        cout<<e[i]<<" ";
    }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base18/50
1Elfogadva0/01ms316 KiB
2Hibás válasz0/03ms580 KiB
3Részben helyes1/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Részben helyes1/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Hibás válasz0/21ms508 KiB
8Részben helyes1/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Elfogadva2/21ms316 KiB
11Részben helyes1/21ms316 KiB
12Részben helyes1/21ms508 KiB
13Hibás válasz0/22ms316 KiB
14Részben helyes1/32ms332 KiB
15Hibás válasz0/36ms564 KiB
16Hibás válasz0/314ms1076 KiB
17Részben helyes1/319ms1380 KiB
18Hibás válasz0/330ms2204 KiB
19Részben helyes1/335ms1960 KiB
20Részben helyes1/341ms2096 KiB
21Részben helyes1/345ms2456 KiB
22Hibás válasz0/452ms3400 KiB