72tps求助(TLE)
查看原帖
72tps求助(TLE)
942071
_xzh_楼主2024/9/1 14:57
#include<bits/stdc++.h>
#define int long long
using namespace std;
inline void read(int& a){
	int s=0,w=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){
		if(ch=='-')w=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		s=s*10+ch-'0';
		ch=getchar();
	}
	a=s*w;
}
int n,k,ans;
struct node{
	int a,c;
}p[300005];
int v[300005];
int vis[300005];
int dp[300005];
bool cmp(node a,node b){
	if(a.c!=b.c)return a.c>b.c;
	else return a.a>b.a;
}
signed main(){
	read(n),read(k);
	for(int i=1;i<=n;i++){
		read(p[i].a),read(p[i].c);
	}
	sort(p+1,p+n+1,cmp);
	for(int i=1;i<=k;i++){
		read(v[i]);
	}
	sort(v+1,v+k+1);
	for(int i=1;i<=k;i++){
		for(int j=1;j<=n;j++){
			if(p[j].a<=v[i]&&dp[i]<p[j].c&&vis[j]==0){
				dp[i]=p[j].c;
				vis[j]=1;
				break;
			}
		}
	}
	for(int i=1;i<=k;i++){
		ans+=dp[i];
//		cout<<dp[i]<<endl;
	}
	printf("%d",ans);
	return 0;
}
2024/9/1 14:57
加载中...