150712025-02-12 11:11:07mateÓvodacpp17Hibás válasz 28/50104ms2856 KiB
#include <bits/stdc++.h>
using namespace std;

#define p array<int,3>

int main() {
	int n,k; cin >> n >> k;
    vector <int> v(k+1);
    for(int i = 1; i <= k; i++){
        cin >> v[i];
    }
    vector <p> emberek(n+1,{0,0,0});
    for(int i = 1; i <= n; i++){
        cin >> emberek[i][1];
        emberek[i][2] = i;
    }
    for(int i = 1; i <= n; i++){
        cin >> emberek[i][0];
    }
    sort(emberek.begin(),emberek.end());
    int cnt = 0;
    vector <int> ans(n+1,0);
    for(int i = n; i > 0; i--){
        if(v[emberek[i][1]] > 0)   {
            v[emberek[i][1]]--;
            ans[emberek[i][2]] = emberek[i][1];
        }else{
            cnt += emberek[i][0];
        }
    }
    cout << cnt << '\n';
    //reverse(ans.begin(),ans.end());
    //ans.resize(n);
    bool kesz = 0;
    for(int& x : ans){
        if(!kesz){
            kesz = 1;
            continue;
        }
        if(x == 0){
            for(int i = 1; i <= k; i++){
                if(v[i] > 0){
                    x = i;
                    v[i]--;
                    break;
                }
            }
        }
        cout << x << ' ';
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base28/50
1Elfogadva0/01ms508 KiB
2Hibás válasz0/04ms316 KiB
3Elfogadva2/21ms316 KiB
4Részben helyes1/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Hibás válasz0/21ms316 KiB
8Részben helyes1/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Elfogadva2/21ms508 KiB
11Elfogadva2/21ms316 KiB
12Részben helyes1/21ms512 KiB
13Hibás válasz0/22ms412 KiB
14Elfogadva3/32ms316 KiB
15Hibás válasz0/312ms676 KiB
16Hibás válasz0/346ms820 KiB
17Elfogadva3/337ms1216 KiB
18Hibás válasz0/361ms1820 KiB
19Elfogadva3/370ms1916 KiB
20Elfogadva3/379ms2100 KiB
21Részben helyes1/394ms2412 KiB
22Hibás válasz0/4104ms2856 KiB