| 15123 | 2025-02-13 10:10:18 | ercseferenc | Óvoda | cpp17 | Forditási hiba |
#include <bits/stdc++.h>
using namespace std;
struct szerep{int kard,meret=0; bool van=0;};
struct gyerek{int szer,sir,kap,ind; bool szerp=0;};
bool has(gyerek n, gyerek m){
return n.sir>m.sir;}
bool has2(gyerek n, gyerek m){
return n.ind<m.ind;}
int main()
{
//ifstream f("szamok.txt");
int n,m,p=0; cin>>n>>m;
vector<szerep>b(m+1); vector<gyerek>a(n+1);
for(int i=1; i<=m; i++){cin>>b[i].kard;}
for(int i=1; i<=n; i++){cin>>a[i].szer; a[i].ind=i;}
for(int i=1; i<=n; i++){cin>>a[i].sir;}
sort(a.begin()+1,a.end(),has);
vector<int>sirok,ures;
for(int i=1; i<=n; i++){
if(b[a[i].szer].meret<b[a[i].szer].kard){
b[a[i].szer].meret++;
b[a[i].szer].van=1;
a[i].kap=a[i].szer;
a[i].szerp=1; p++;}
else sirok.push_back(i);}
for(int i=1; i<=m; i++){
if(!b[i].van)ures.push_back(i);}
if(sirok.size()>=ures.size()){
int k=0;
for(int i=0; i<ures.size(); i++){
b[ures[i]].van=1;
a[sirok[k]].kap=ures[i];
a[sirok[k]].szerp=1;
k++;}
vector<int>mn;
for(int i=1; i<=n; i++)
{if(a[i].szerp==0)mn.push_back(i);}
int k=1;
for(int i=0; i<mn.size(); i++){
while(b[k].meret==b[k].kard)k++;
a[mn[i]].kap=k;
a[mn[i]].szerp=1;
b[k].meret++;}}
/*else{
int k=0;
for(int i=0; i<sirok.size(); i++){
b[ures[k]].van=1;
a[sirok[i]].kap=ures[k];
a[sirok[k]].szerp=1;
k++;}
vector<int>mu;
for(int i=1; i<=m; i++){if(b[i].van==0)mu.push_back(i);}
int k=n;
for(int i=0; i<mu.size(); i++){
while(b[a[k].kap].meret==1)k--;
b[a[k].kap].meret--;
sirok.push_back(k);
a[k].kap=mu[i];
k--;}}*/
int s=0;
for(int i=0; i<sirok.size(); i++){s+=a[sirok[i]].sir;}
cout<<s<<endl;
sort(a.begin()+1, a.end(),has2);
for(int i=1; i<=n; i++){cout<<a[i].kap<<" ";}
return 0;
}
open /var/local/lib/isolate/419/box/a.out: no such file or directory
main.cpp: In function 'int main()':
main.cpp:38:13: error: redeclaration of 'int k'
38 | int k=1;
| ^
main.cpp:29:13: note: 'int k' previously declared here
29 | int k=0;
| ^