#include <iostream>
#include <vector>
#include <algorithm>
#include <deque>
using namespace std;
struct adat
{
int vagy, poz, konny, lett;
};
struct adat2
{
int fer, van;
};
bool comp (adat a, adat b)
{
return a.konny>b.konny;
}
bool comp2 (adat a, adat b)
{
return a.poz<b.poz;
}
int i, n, m, sir, maradt;
deque <int> maradek;
int main()
{
cin>>n>>m;
vector <adat2> szerep(m+1);
vector <adat> gyerek(n+1);
for (i=1; i<=m; ++i) cin>>szerep[i].fer;
for (i=1; i<=n; ++i)
{
cin>>gyerek[i].vagy;
gyerek[i].poz=i;
}
for (i=1; i<=n; ++i) cin>>gyerek[i].konny;
sort (gyerek.begin()+1, gyerek.end(), comp);
maradt=m;
for (i=1; i<=n; ++i)
{
if (n-i+1==maradt)
{
sir+=gyerek[i].konny;
maradek.push_back(i);
}
else if (szerep[gyerek[i].vagy].fer)
{
if (!szerep[gyerek[i].vagy].van==0) --maradt;
--szerep[gyerek[i].vagy].fer;
szerep[gyerek[i].vagy].van=1;
gyerek[i].lett=gyerek[i].vagy;
}else
{
sir+=gyerek[i].konny;
maradek.push_back(i);
}
//cout<<gyerek[i].konny<<" ";
}
for (i=1; i<=m; ++i)
{
if (!szerep[i].van)
{
gyerek[maradek.front()].lett=i;
szerep[i].van=1;
--szerep[i].fer;
maradek.pop_front();
}
}
while (!maradek.empty())
{
if (szerep[i].fer)
{
gyerek[maradek.front()].lett=i;
maradek.pop_front();
--szerep[i].fer;
}else ++i;
}
sort (gyerek.begin()+1, gyerek.end(), comp2);
cout<<sir<<"\n";
for (i=1; i<=n; ++i)
{
cout<<gyerek[i].lett<<" ";
}
return 0;
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 4/50 | ||||||
1 | Elfogadva | 0/0 | 3ms | 1680 KiB | |||
2 | Futási hiba | 0/0 | 7ms | 2160 KiB | |||
3 | Futási hiba | 0/2 | 2ms | 2268 KiB | |||
4 | Hibás válasz | 0/2 | 2ms | 2372 KiB | |||
5 | Futási hiba | 0/2 | 2ms | 2568 KiB | |||
6 | Hibás válasz | 0/2 | 2ms | 2600 KiB | |||
7 | Futási hiba | 0/2 | 2ms | 2824 KiB | |||
8 | Részben helyes | 1/2 | 2ms | 2732 KiB | |||
9 | Hibás válasz | 0/2 | 2ms | 2876 KiB | |||
10 | Elfogadva | 2/2 | 2ms | 2992 KiB | |||
11 | Futási hiba | 0/2 | 2ms | 3304 KiB | |||
12 | Futási hiba | 0/2 | 2ms | 3376 KiB | |||
13 | Futási hiba | 0/2 | 3ms | 3640 KiB | |||
14 | Futási hiba | 0/3 | 3ms | 3656 KiB | |||
15 | Futási hiba | 0/3 | 12ms | 4244 KiB | |||
16 | Futási hiba | 0/3 | 25ms | 5140 KiB | |||
17 | Részben helyes | 1/3 | 45ms | 5388 KiB | |||
18 | Futási hiba | 0/3 | 54ms | 6664 KiB | |||
19 | Futási hiba | 0/3 | 59ms | 6592 KiB | |||
20 | Futási hiba | 0/3 | 68ms | 7040 KiB | |||
21 | Futási hiba | 0/3 | 76ms | 7364 KiB | |||
22 | Futási hiba | 0/4 | 94ms | 8708 KiB |