萌新求助2份代码一份68,一份60
查看原帖
萌新求助2份代码一份68,一份60
276588
lonely_cyx楼主2023/8/7 21:39

68代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
struct node
{
	int v,w;
}a[1000010];
int n,k;
int m[1000010];
bool cmp(node a,node b)
{
	if(a.v==b.v)
		return a.w>b.w;
	else
		return a.v>b.v;
}
bool cmp2(int a,int b)
{
	return a>b;
}
signed main()
{
	cin>>n>>k;
	for(int i=1;i<=n;i++)
		cin>>a[i].v>>a[i].w;
	if(n<=k)
	{
		int ans=0;
		for(int i=1;i<=n;i++)
			ans+=a[i].w; 
		cout<<ans;
		return 0;
	}
	for(int i=1;i<=k;i++)
		cin>>m[i];
	sort(a+1,a+n+1,cmp);
	sort(m+1,m+k+1,cmp2);
	int j=1;
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		if(a[i].v<=m[j])
		{
			ans+=a[i].w;
			j++;
		}
	}
	cout<<ans;
	return 0;
}

60份代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
struct node
{
	int v,w;
}a[1000010];
int n,k;
int m[1000010];
bool cmp(node a,node b)
{
	if(a.v==b.v)
		return a.w>b.w;
	else
		return a.v>b.v;
}
bool cmp2(int a,int b)
{
	return a<b;
}
signed main()
{
	cin>>n>>k;
	for(int i=1;i<=n;i++)
		cin>>a[i].v>>a[i].w;
	if(n<=k)
	{
		int ans=0;
		for(int i=1;i<=n;i++)
			ans+=a[i].w; 
		cout<<ans;
		return 0;
	}
	for(int i=1;i<=k;i++)
		cin>>m[i];
	sort(a+1,a+n+1,cmp);
	sort(m+1,m+k+1,cmp2);
	int j=1;
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		if(a[i].v<=m[j])
		{
			ans+=a[i].w;
			j++;
		}
	}
	cout<<ans;
	return 0;
}

求调

2023/8/7 21:39
加载中...