80分,求调
查看原帖
80分,求调
1731963
Ryp18905404951楼主2025/8/29 14:30
#include <iostream>
#include <queue>
#include <algorithm>
#include <map>
using namespace std;
struct Node{
	int id;
	int shu;
	bool operator<(const Node& t)const{
		if(t.id==id){
			return shu>t.shu;
		}
		return id<t.id;
	}
}a[100005],b[100005];
int xx[100005],yy[100005],zz[100005],ans=0;
map<int,int> mp;
int main(){
	int t,n,oo=0;
	cin>>t>>n;
	for(int i=1; i<=n; i++){
		cin>>a[i].id;
	}
	for(int i=1; i<=n; i++){
		cin>>a[i].shu;
		oo+=a[i].shu; 
	}
	sort(a+1,a+1+n);
	
	for(int i=1; i<=n; i++){
		if(mp[a[i].id]==0){
			mp[a[i].id]=1;
			ans+=a[i].shu;
			xx[a[i].id]=a[i].shu;
		}else{
			int h=a[i].id;
			int u=h,num=2e9,sum;
			int k=0;
			while(--h){
				if(mp[h]==0){
					xx[h]=a[i].shu;
					mp[h]=1;
					ans+=a[i].shu;
					k=1;
					break;
				}
			}
			if(k==1){
				continue;
			}
			while(--u){
				if(a[u].shu<num){
					num=a[u].shu;
					sum=a[u].id;
				}
			}
			if(num<a[i].shu){
				ans-=num;
				ans+=a[i].shu;
				xx[sum]=a[i].shu;
			}
		}
	}
	cout<<t-(oo-ans)<<endl;
	return 0;
}
2025/8/29 14:30
加载中...