244172026-02-11 13:07:50akososkaÓvodacpp17Wrong answer 18/50109ms3380 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() {
	int n,k,b[100001],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;
}
SubtaskSumTestVerdictTimeMemory
base18/50
1Accepted0/01ms316 KiB
2Wrong answer0/04ms316 KiB
3Partially correct1/21ms316 KiB
4Accepted2/21ms316 KiB
5Partially correct1/21ms316 KiB
6Accepted2/21ms316 KiB
7Wrong answer0/21ms316 KiB
8Partially correct1/21ms316 KiB
9Accepted2/21ms316 KiB
10Accepted2/21ms316 KiB
11Partially correct1/21ms316 KiB
12Partially correct1/21ms316 KiB
13Wrong answer0/22ms556 KiB
14Partially correct1/32ms500 KiB
15Wrong answer0/312ms600 KiB
16Wrong answer0/327ms1060 KiB
17Partially correct1/337ms1232 KiB
18Wrong answer0/359ms2048 KiB
19Partially correct1/367ms2044 KiB
20Partially correct1/374ms2020 KiB
21Partially correct1/385ms2428 KiB
22Wrong answer0/4109ms3380 KiB