183192025-10-19 23:10:48ercseferencÓvodacpp17Időlimit túllépés 46/50400ms6580 KiB
#include <bits/stdc++.h>
using namespace std;
struct gyerek{int ido,ind,vagy,kap;};
bool has1(gyerek n, gyerek m){
    if(n.vagy==m.vagy)
        return n.ido>m.ido;
    else return n.vagy<m.vagy;}
bool has2(gyerek n, gyerek m){
    return n.ido<m.ido;}
int main()
{
    /*ifstream f("szamok.txt");*/ int n,m;
    cin>>n>>m; vector<int>b(m+1); vector<gyerek>a(n),ks(n);
    vector<bool>c(m+1, 0);
    for(int i=1; i<=m; i++)cin>>b[i];
    for(int i=0; i<n; i++){cin>>a[i].vagy; a[i].ind=i;}
    for(int i=0; i<n; i++){cin>>a[i].ido;}
    ks=a;
    sort(a.begin(), a.end(), has1);
    vector<gyerek>okes; vector<int>sir;
    int k=-1,db;
    for(int i=0; i<n; i++){
        if(a[i].vagy!=k){k=a[i].vagy; db=1;
            ks[a[i].ind].kap=k; c[k]=1;}
        else{
            db++;
            if(db>b[k])sir.push_back(a[i].ind);
            else okes.push_back(a[i]);}}
    sort(okes.begin(),okes.end(),has2);
    for(int i=1; i<=m; i++){
        if(!c[i]){
            if(!sir.empty()){
                ks[sir[0]].kap=i;
                sir.erase(sir.begin());}
            else{
                ks[okes[0].ind].kap=i;
                okes.erase(okes.begin());}}
        b[i]--;}
    for(gyerek i:okes){ks[i.ind].kap=ks[i.ind].vagy; b[ks[i.ind].vagy]--;}
    for(int i=1; i<=m; i++){
        while(b[i]>0 && !sir.empty()){
            b[i]--;
            ks[sir[0]].kap=i;
            sir.erase(sir.begin());}
        if(sir.empty())break;}
    long long perc=0;
    for(int i=0; i<n; i++){
        if(ks[i].kap!=ks[i].vagy)perc+=ks[i].ido;}
    cout<<perc<<endl;
    for(int i=0; i<n; i++)cout<<ks[i].kap<<" ";
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base46/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/06ms748 KiB
3Elfogadva2/21ms500 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms328 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms412 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Elfogadva2/21ms316 KiB
11Elfogadva2/21ms316 KiB
12Elfogadva2/21ms552 KiB
13Elfogadva2/22ms316 KiB
14Elfogadva3/32ms408 KiB
15Elfogadva3/313ms1224 KiB
16Elfogadva3/329ms1872 KiB
17Elfogadva3/346ms3244 KiB
18Elfogadva3/3178ms4116 KiB
19Elfogadva3/382ms5792 KiB
20Elfogadva3/3131ms6564 KiB
21Elfogadva3/3104ms6580 KiB
22Időlimit túllépés0/4400ms6316 KiB