154362025-02-19 16:06:27999Óvodacpp17Hibás válasz 18/50108ms11572 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;

#define int long long

const int inf=1e9;

int power(int a,int b){
    if(b==0)return 1;
    return power(a,b-1)*a;
}

signed main() {
    int n,k;cin>>n>>k;
    vector<int> db(k);
    for(int i = 0;i<k;i++)cin>>db[i];
    vector<int> akar(n);
    for(int i = 0;i<n;i++)cin>>akar[i];
    vector<int> cost(n);
    for(int i = 0;i<n;i++)cin>>cost[i];



    vector<vector<pair<int,int>>> full(k);
    for(int i = 0;i<n;i++){
        akar[i]--;
        full[akar[i]].push_back({cost[i],i});
    }
    for(int i = 0;i<k;i++){
        sort(full[i].rbegin(),full[i].rend());
    }/*// debug kiiras
    for(int i = 0;i<k;i++){
        for(auto j:full[i])cout<<j.second<<' ';
        cout<<endl;
    }*/
    vector<int> ans(n,-1),dbb;
    dbb=db;
    for(int i = 0;i<k;i++){
        for(int j = 0;j<min(db[i],(int)full[i].size());j++){
            ans[full[i][j].second]=i;
            dbb[i]--;
        }
    }
    db=dbb;
    stack<pair<int,int>> s;
    for(int i = 0;i<k;i++){
        if(db[i]>0){
            s.push({i,db[i]});
            //cerr<<i<<' '<<db[i]<<endl;
        }
    }
    int cryingsimulatortime=0;
    for(int i = 0;i<n;i++){
        if(ans[i]==-1){
            cryingsimulatortime+=cost[i];// >:)
            ans[i]=s.top().first-1;
            s.top().second--;
            if(s.top().second==0)s.pop();
        }
    }
    cout<<cryingsimulatortime<<endl;
    for(int i = 0;i<n;i++)cout<<ans[i]+1<<' ';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base18/50
1Elfogadva0/01ms512 KiB
2Hibás válasz0/04ms716 KiB
3Részben helyes1/21ms316 KiB
4Részben helyes1/21ms508 KiB
5Részben helyes1/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Hibás válasz0/21ms316 KiB
8Részben helyes1/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Részben helyes1/21ms316 KiB
11Részben helyes1/21ms316 KiB
12Részben helyes1/21ms316 KiB
13Hibás válasz0/22ms316 KiB
14Részben helyes1/31ms316 KiB
15Hibás válasz0/312ms1364 KiB
16Hibás válasz0/327ms2848 KiB
17Elfogadva3/335ms2952 KiB
18Hibás válasz0/361ms6328 KiB
19Részben helyes1/364ms4944 KiB
20Részben helyes1/370ms5524 KiB
21Részben helyes1/382ms6452 KiB
22Hibás válasz0/4108ms11572 KiB