51求调
查看原帖
51求调
1011122
gyx250楼主2024/11/24 20:59
#include<bits/stdc++.h> 
using namespace std;
int n,k,f[200005],b[200005],num,nums;
struct node{
	int job,man;
}a[200005];
bool cmp(node x,node y){
	if(x.job!=y.job) return x.job<y.job;
	else return x.man>y.man;
}
bool cmb(int x,int y){
	return x<y;
}
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i].job;
	}
	for(int i=1;i<=n;i++){
		cin>>a[i].man;
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++){
		if(f[a[i].job]==0)f[a[i].job]=1,nums++;
		else b[++num]=a[i].man;
	}
	sort(b+1,b+num+1,cmb);
	num=0;
	if(k>nums)for(int i=1;i<=k-nums;i++){
		num+=b[i];
	}
	cout<<num;
  return 0;
}
2024/11/24 20:59
加载中...