228092026-01-15 18:54:35szjÓvodacpp17Elfogadva 50/5054ms4660 KiB
#include<bits/stdc++.h>
using namespace std;
struct kolyok
{
    int pulyanr, boges, valasz;
};
bool f(kolyok a, kolyok b)
{
    return a.boges > b.boges;
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    long long int n, m, i, siras=0, j=0;
    cin >> n >> m;
    int szerep[m], szerep2[m];
    vector<int> kiva(n, -1);
    stack<kolyok>st;
    kolyok t[n];
    for(i=0; i<m; i++)
    {
        cin >> szerep[i];
        szerep2[i]=szerep[i];
    }
    for(i=0; i<n; i++)
    {
        cin >> t[i].valasz;
        t[i].valasz--;
        t[i].pulyanr=i;
    }
    for(i=0; i<n; i++)cin >> t[i].boges;
    sort(t, t+n, f);
    for(i=0; i<n; i++)
    {
        if(szerep[t[i].valasz]>0)
        {
            kiva[t[i].pulyanr]=t[i].valasz;
            szerep[t[i].valasz]--;
            st.push(t[i]);
        }
    }
    queue<int>q;
    for(i=0; i<m; i++)if(szerep2[i]==szerep[i])q.push(i);
    for(i=0; i<n; i++)
    {
        for(j; j<m && szerep[j]==0; j++);
        if(kiva[t[i].pulyanr]==-1)
        {
            if(q.empty())
            {
                kiva[t[i].pulyanr]=j;
                szerep[j]--;
            }
            else
            {
                kiva[t[i].pulyanr]=q.front();
                szerep[q.front()]--;
                q.pop();
            }
            siras+=t[i].boges;
        }
    }
    while(!q.empty())
    {
        if(szerep[st.top().valasz]+1<szerep2[st.top().valasz])
        {
            szerep[st.top().valasz]++;
            siras+=st.top().boges;
            kiva[st.top().pulyanr]=q.front();
            q.pop();
        }
        st.pop();
    }
    cout << siras << endl;
    for(i=0; i<n; i++)cout << kiva[i]+1 << " ";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms508 KiB
2Elfogadva0/03ms564 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Elfogadva2/21ms316 KiB
11Elfogadva2/21ms316 KiB
12Elfogadva2/21ms316 KiB
13Elfogadva2/21ms544 KiB
14Elfogadva3/31ms316 KiB
15Elfogadva3/37ms820 KiB
16Elfogadva3/314ms1252 KiB
17Elfogadva3/320ms1844 KiB
18Elfogadva3/330ms2776 KiB
19Elfogadva3/335ms3052 KiB
20Elfogadva3/341ms2988 KiB
21Elfogadva3/346ms3636 KiB
22Elfogadva4/454ms4660 KiB