183202025-10-19 23:12:45ercseferencÓvodacpp17Accepted 50/50351ms5800 KiB
#include <bits/stdc++.h>
using namespace std;
struct gyerek{int ido,ind,vagy,kap;};
bool has1(gyerek n, gyerek m){
    if(n.vagy==m.vagy)
        return n.ido>m.ido;
    else return n.vagy<m.vagy;}
bool has2(gyerek n, gyerek m){
    return n.ido<m.ido;}
int main()
{
    ios_base::sync_with_stdio(false); cin.tie(nullptr);
    /*ifstream f("szamok.txt");*/ int n,m;
    cin>>n>>m; vector<int>b(m+1); vector<gyerek>a(n),ks(n);
    vector<bool>c(m+1, 0);
    for(int i=1; i<=m; i++)cin>>b[i];
    for(int i=0; i<n; i++){cin>>a[i].vagy; a[i].ind=i;}
    for(int i=0; i<n; i++){cin>>a[i].ido;}
    ks=a;
    sort(a.begin(), a.end(), has1);
    vector<gyerek>okes; vector<int>sir;
    int k=-1,db;
    for(int i=0; i<n; i++){
        if(a[i].vagy!=k){k=a[i].vagy; db=1;
            ks[a[i].ind].kap=k; c[k]=1;}
        else{
            db++;
            if(db>b[k])sir.push_back(a[i].ind);
            else okes.push_back(a[i]);}}
    sort(okes.begin(),okes.end(),has2);
    for(int i=1; i<=m; i++){
        if(!c[i]){
            if(!sir.empty()){
                ks[sir[0]].kap=i;
                sir.erase(sir.begin());}
            else{
                ks[okes[0].ind].kap=i;
                okes.erase(okes.begin());}}
        b[i]--;}
    for(gyerek i:okes){ks[i.ind].kap=ks[i.ind].vagy; b[ks[i.ind].vagy]--;}
    for(int i=1; i<=m; i++){
        while(b[i]>0 && !sir.empty()){
            b[i]--;
            ks[sir[0]].kap=i;
            sir.erase(sir.begin());}
        if(sir.empty())break;}
    long long perc=0;
    for(int i=0; i<n; i++){
        if(ks[i].kap!=ks[i].vagy)perc+=ks[i].ido;}
    cout<<perc<<endl;
    for(int i=0; i<n; i++)cout<<ks[i].kap<<" ";
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/03ms564 KiB
3Accepted2/21ms316 KiB
4Accepted2/21ms316 KiB
5Accepted2/21ms388 KiB
6Accepted2/21ms520 KiB
7Accepted2/21ms316 KiB
8Accepted2/21ms316 KiB
9Accepted2/21ms316 KiB
10Accepted2/21ms508 KiB
11Accepted2/21ms316 KiB
12Accepted2/21ms316 KiB
13Accepted2/21ms472 KiB
14Accepted3/31ms316 KiB
15Accepted3/38ms1008 KiB
16Accepted3/317ms1612 KiB
17Accepted3/329ms2996 KiB
18Accepted3/3149ms3420 KiB
19Accepted3/352ms5204 KiB
20Accepted3/3100ms5620 KiB
21Accepted3/367ms5800 KiB
22Accepted4/4351ms5040 KiB