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;
}
求调