#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
struct gyerek
{
int valasztott;
int siras;
int index;
int kapott=-1;
}typedef gyerek;
int main()
{
set<int> urespoziciok;
multiset<int> poziciok;
int n,k;
cin>>n>>k;
map<int,int> elerhetoszerepek;
int x;
for(int i=1;i<=k;i++)
{
cin>>x;
urespoziciok.insert(i);
for(int j=0;j<x;j++)
poziciok.insert(i);
}
vector<gyerek>data(n);
for(int i=0;i<n;i++)
{
data[i].index=i;
cin>>data[i].valasztott;
}
for(int i=0;i<n;i++)
{
cin>>data[i].siras;
}
//sort
sort(data.begin(),data.end(),[](gyerek a,gyerek b)
{
if(a.siras>b.siras)
{
return true;
}
return false;
});
//aki tudja megkapja a vagyat
for(int i=0;i<n;i++)
{
if(poziciok.find(data[i].valasztott)!=poziciok.end())
{
if(urespoziciok.find(data[i].valasztott) != urespoziciok.end())
urespoziciok.erase(urespoziciok.find(data[i].valasztott));
poziciok.erase(poziciok.find(data[i].valasztott));
data[i].kapott=data[i].valasztott;
}
}
//cout<<"a";
for(int i=0;i<n;i++)
{
if(data[i].kapott != -1)
continue;
if(urespoziciok.size())
{
data[i].kapott=*urespoziciok.begin();
urespoziciok.erase(urespoziciok.begin());
}
else
{
if(poziciok.find(data[i].valasztott)!=poziciok.end())
{
data[i].kapott=*poziciok.begin();
poziciok.erase(poziciok.begin());
}
}
}
//cout<<" a";
int i=n-1;
while(urespoziciok.size()!=0 && i>=0)
{
if(data[i].valasztott != data[i].kapott)
{
data[i].kapott=*urespoziciok.begin();
urespoziciok.erase(urespoziciok.begin());
}
i--;
}
int i=n-1;
while(urespoziciok.size()!=0 && i>=0)
{
if(data[i].valasztott != data[i].kapott)
{
data[i].kapott=*urespoziciok.begin();
urespoziciok.erase(urespoziciok.begin());
}
i--;
}
int ssiras=0;
for(auto x : data)
{
if(x.kapott != x.valasztott)
{
ssiras+=x.siras;
}
}
vector<int> ans(n);
for(auto x : data)
{
ans[x.index]=x.kapott;
}
cout<<ssiras<<endl;
for(auto x : ans)
{
cout<<x<<" ";
}
return 0;
}
open /var/local/lib/isolate/440/box/a.out: no such file or directory
main.cpp: In function 'int main()':
main.cpp:94:9: error: redeclaration of 'int i'
94 | int i=n-1;
| ^
main.cpp:84:9: note: 'int i' previously declared here
84 | int i=n-1;
| ^