151422025-02-13 17:07:52horkaÓvodacpp17Hibás válasz 35/50127ms8876 KiB
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n,k; cin>>n>>k;
    vector<int> hany(k+1);
    for(int i=1; i<=k; i++)
        cin>>hany[i];
    vector<vector<array<int, 2>>> v(k+1);
    vector<int> ind(n+1);
    for(int i=1; i<=n; i++)
        cin>>ind[i];
    for(int i=1; i<=n; i++)
    {
        int ar; cin>>ar;
        v[ind[i]].push_back({ar,i});
    }
    vector<int> ans(n+1);
    set<int> kell;
    for(int i=1; i<=k; i++)
    {
        if(v[i].empty())
        {
            kell.insert(i);
            continue;
        }
        sort(v[i].rbegin(),v[i].rend());
        ans[v[i][0][1]]=i;
    }
    int sum=0;
    for(int i=1; i<=k; i++)
    {
        if(v[i].empty()) continue;
        for(int j=hany[i]; j<v[i].size(); j++)
        {
            int cs=*kell.begin();
            ans[v[i][j][1]]=cs;
            sum+=v[i][j][0];
            kell.erase(cs);
        }
    }
    vector<array<int, 3>> bent;
    for(int i=1; i<=k; i++)
    {
        if(v[i].empty()) continue;
        for(int j=1; j<min((int)v[i].size(),hany[i]); j++)
            bent.push_back({v[i][j][0],i,v[i][j][1]});
    }
    sort(bent.begin(),bent.end());
    for(auto &[ar,tip,idx]:bent)
    {
        if(kell.empty())
        {
            ans[idx]=tip;
        }
        else
        {
            int cs=*kell.begin();
            kell.erase(cs);
            sum+=ar;
            ans[idx]=cs;
        }
    }
    cout<<sum<<"\n";
    for(int i=1; i<=n; i++)
        cout<<ans[i]<<" ";
    cout<<"\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base35/50
1Elfogadva0/01ms316 KiB
2Hibás válasz0/04ms564 KiB
3Részben helyes1/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Részben helyes1/21ms356 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Részben helyes1/21ms316 KiB
9Elfogadva2/21ms384 KiB
10Elfogadva2/21ms316 KiB
11Részben helyes1/21ms316 KiB
12Részben helyes1/21ms344 KiB
13Elfogadva2/22ms316 KiB
14Részben helyes1/32ms316 KiB
15Elfogadva3/313ms1108 KiB
16Elfogadva3/329ms2168 KiB
17Részben helyes1/343ms2320 KiB
18Elfogadva3/371ms4660 KiB
19Részben helyes1/379ms3852 KiB
20Részben helyes1/382ms4016 KiB
21Részben helyes1/3100ms4528 KiB
22Elfogadva4/4127ms8876 KiB