20pts_求调
查看原帖
20pts_求调
1012217
Panzx_SYCTD楼主2025/6/18 15:58
#include<bits/stdc++.h>
#define ll long long
#define endl '\n'
using namespace std;

const int N=1e5+5;

int n,m;
vector<int> a[N];
map<int,int> mp;
int cnt=0;
int ans=0;

void solve()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int p,c;
		cin>>p>>c;
		mp[p]++;
		a[p].push_back(c);
	}
	for(int i=1;i<=n;i++)
	{
		sort(a[i].begin(),a[i].end());
	}
	int sum=0;
	while(1)
	{
		int maxn=0,l=1;
		for(int i=1;i<=n;i++)
		{
			if(mp[i]>=maxn)
			{
				maxn=mp[i];
				l=i;
			}
		}
		int flag=1;
		for(int i=2;i<=n;i++)
		{
			if(mp[i]>=mp[1]) flag=0;
		}
		if(flag) break;
		
		sum+=a[l][0];
		a[l].erase(a[l].begin());
		mp[l]--;
		mp[1]++;
	}
	cout<<sum<<endl;
}

signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	int T=1;
	//cin>>T;

	while(T--) solve();

	return 0;
}
2025/6/18 15:58
加载中...