#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 | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 50/50 | ||||||
1 | Elfogadva | 0/0 | 2ms | 1768 KiB | |||
2 | Elfogadva | 0/0 | 4ms | 2000 KiB | |||
3 | Elfogadva | 2/2 | 1ms | 1876 KiB | |||
4 | Elfogadva | 2/2 | 1ms | 1876 KiB | |||
5 | Elfogadva | 2/2 | 1ms | 1884 KiB | |||
6 | Elfogadva | 2/2 | 1ms | 1884 KiB | |||
7 | Elfogadva | 2/2 | 1ms | 1888 KiB | |||
8 | Elfogadva | 2/2 | 1ms | 1896 KiB | |||
9 | Elfogadva | 2/2 | 1ms | 1904 KiB | |||
10 | Elfogadva | 2/2 | 1ms | 1904 KiB | |||
11 | Elfogadva | 2/2 | 1ms | 1908 KiB | |||
12 | Elfogadva | 2/2 | 1ms | 1912 KiB | |||
13 | Elfogadva | 2/2 | 2ms | 1932 KiB | |||
14 | Elfogadva | 3/3 | 2ms | 1948 KiB | |||
15 | Elfogadva | 3/3 | 10ms | 2392 KiB | |||
16 | Elfogadva | 3/3 | 25ms | 3176 KiB | |||
17 | Elfogadva | 3/3 | 37ms | 3472 KiB | |||
18 | Elfogadva | 3/3 | 70ms | 4640 KiB | |||
19 | Elfogadva | 3/3 | 101ms | 4704 KiB | |||
20 | Elfogadva | 3/3 | 83ms | 5676 KiB | |||
21 | Elfogadva | 3/3 | 86ms | 5552 KiB | |||
22 | Elfogadva | 4/4 | 103ms | 6728 KiB |