#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n, k;
cin >> n >> k;
vector<int> maxi(k + 1), w(n + 1), cry(n + 1), used(k + 1);
for(int i = 1; i <= k; i++)
{
cin >> maxi[i];
}
vector<vector<pair<int, int> > > r(k + 1);
for(int i = 1; i <= n; i++) cin >> w[i];
for(int i = 1; i <= n; i++) cin >> cry[i];
vector<pair<int, int> > all;
for(int i = 1; i <= n; i++)
{
r[w[i]].push_back({cry[i], i});
}
vector<int> ans(n + 1);
int sum = 0;
for(int i = 1; i <= k; i++)
{
int a = r[i].size();
used[i] = min(maxi[i], a);
sort(r[i].begin(), r[i].end(), greater<pair<int, int> >());
for(int j = 0; j < min(maxi[i], a); j++)
{
all.push_back(r[i][j]);
ans[r[i][j].second] = i;
}
for(int j = maxi[i]; j < r[i].size(); j++)
{
all.push_back({0, r[i][j].second});
sum += r[i][j].first;
}
}
sort(all.begin(), all.end());
int c = 0;
int z = 1;
while(z <= k)
{
while(z <= k && used[z] > 0) z++;
if(z > k) break;
while(all[c].first != 0 && used[w[all[c].second]] <= 1)
{
c++;
}
used[z]++;
int ind = all[c].second;
if(all[c].first != 0)
{
used[w[ind]]--;
sum += all[c].first;
}
ans[ind] = z;
}
int l = 1;
cout << sum << "\n";
for(int i = 1; i <= n; i++)
{
if(ans[i] == 0)
{
while(used[l] == maxi[l])
{
l++;
if(l > k) return 0;
}
ans[i] = l;
used[l]++;
}
cout << ans[i] << " ";
}
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 29/50 | ||||||
1 | Elfogadva | 0/0 | 3ms | 2096 KiB | |||
2 | Hibás válasz | 0/0 | 4ms | 2900 KiB | |||
3 | Elfogadva | 2/2 | 3ms | 2428 KiB | |||
4 | Elfogadva | 2/2 | 3ms | 2640 KiB | |||
5 | Részben helyes | 1/2 | 3ms | 2712 KiB | |||
6 | Elfogadva | 2/2 | 3ms | 2944 KiB | |||
7 | Hibás válasz | 0/2 | 2ms | 3052 KiB | |||
8 | Elfogadva | 2/2 | 3ms | 3280 KiB | |||
9 | Elfogadva | 2/2 | 3ms | 3268 KiB | |||
10 | Elfogadva | 2/2 | 2ms | 3212 KiB | |||
11 | Elfogadva | 2/2 | 3ms | 3336 KiB | |||
12 | Részben helyes | 1/2 | 3ms | 3460 KiB | |||
13 | Hibás válasz | 0/2 | 3ms | 3872 KiB | |||
14 | Elfogadva | 3/3 | 3ms | 3908 KiB | |||
15 | Hibás válasz | 0/3 | 8ms | 5316 KiB | |||
16 | Hibás válasz | 0/3 | 17ms | 7568 KiB | |||
17 | Elfogadva | 3/3 | 25ms | 7576 KiB | |||
18 | Hibás válasz | 0/3 | 39ms | 12068 KiB | |||
19 | Elfogadva | 3/3 | 43ms | 11220 KiB | |||
20 | Elfogadva | 3/3 | 48ms | 11348 KiB | |||
21 | Részben helyes | 1/3 | 56ms | 12600 KiB | |||
22 | Hibás válasz | 0/4 | 70ms | 19404 KiB |