2412021-03-05 15:23:06balintttÓvodacpp14Elfogadva 50/50103ms6728 KiB
#include<bits/stdc++.h>

using namespace std;

class gyerek{
public:
    int sz, e;
    int index;
    int t=-1;
};

int n, m;

vector<int> mx;
vector<int> db;

vector<gyerek> p;

bool operator<(const gyerek& g1, const gyerek& g2){
    return g1.e > g2.e;
}

bool cmp1(const gyerek& g1, const gyerek& g2){
    return g1.index < g2.index;
}


int main(){
    cin >> n >> m;
    mx.resize(m);
    db.resize(m);
    for(int i=0;i<m;i++){
        cin >> mx[i];
    }
    p.resize(n);
    for(int i=0;i<n;i++){
        cin >> p[i].sz;
        --p[i].sz;
        p[i].index = i;
    }
    for(int i=0;i<n;i++){
        cin >> p[i].e;
        p[i].index = i;
    }
    sort(p.begin(), p.end());
    stack<int> ava;
    for(int i=0;i<n;i++){
        if(db[p[i].sz] < mx[p[i].sz]){
            p[i].t = p[i].sz;
            ++db[p[i].sz];
        } else {
            ava.push(i);
        }
    }
    int poi = n-1;
    for(int i = 0;i<m;i++){
        if(db[i] == 0){
            if(ava.size()){
                p[ava.top()].t = i;
                ++db[i];
                ava.pop();
            } else {
                while(db[p[poi].t] <2){
                    --poi;
                }
                --db[p[poi].t];
                p[poi].t = i;
                ++db[i];
            }
        }
    }
    stack<int> av;
    for(int i=0;i<m && av.size() < ava.size();i++){
        for(int j=0;j<mx[i]-db[i];j++){
            av.push(i);
        }
    }
    while(ava.size()){
        p[ava.top()].t = av.top();
        av.pop();
        ava.pop();
    }
    sort(p.begin(), p.end(), cmp1);
    long long er=0;
    for(int i=0;i<n;i++){
        //cout << p[i].t << ' ';
        er+=(p[i].t!=p[i].sz)*p[i].e;
    }
    cout << er << '\n';
    for(int i=0;i<n;i++){
        cout << p[i].t+1 << ' ';
        //er+=(p[i].t!=p[i].sz)*p[i].e;
    }
return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/02ms1768 KiB
2Elfogadva0/04ms2000 KiB
3Elfogadva2/21ms1876 KiB
4Elfogadva2/21ms1876 KiB
5Elfogadva2/21ms1884 KiB
6Elfogadva2/21ms1884 KiB
7Elfogadva2/21ms1888 KiB
8Elfogadva2/21ms1896 KiB
9Elfogadva2/21ms1904 KiB
10Elfogadva2/21ms1904 KiB
11Elfogadva2/21ms1908 KiB
12Elfogadva2/21ms1912 KiB
13Elfogadva2/22ms1932 KiB
14Elfogadva3/32ms1948 KiB
15Elfogadva3/310ms2392 KiB
16Elfogadva3/325ms3176 KiB
17Elfogadva3/337ms3472 KiB
18Elfogadva3/370ms4640 KiB
19Elfogadva3/3101ms4704 KiB
20Elfogadva3/383ms5676 KiB
21Elfogadva3/386ms5552 KiB
22Elfogadva4/4103ms6728 KiB