#include<bits/stdc++.h>
using namespace std;
int n,k,b=1,c[300001]={0};
long long ans=0;
struct point{
int m,v;
}a[300001];
priority_queue<int> s;
bool cmp(point d,point e)
{
if(d.m==e.m)
{
return d.v<e.v;
}
return d.m<e.m;
}
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>a[i].m>>a[i].v;
}
for(int i=1;i<=k;i++)
{
cin>>c[i];
}
sort(c+1,c+k+1);
sort(a+1,a+n+1,cmp);
a[n+1].m=2147483647;
for(int i=1;i<=n+1;i++)
{
while(a[i].m>c[b])
{
if(!s.empty())
ans+=s.top(),s.pop();
b++;
if(b>k)
break;
}
if(b>k)
break;
s.push(a[i].v);
}
cout<<ans;
return 0;
}
这个代码是ac了的
#include<bits/stdc++.h>
using namespace std;
struct point{
int m,v;
}a[300001];
int n,k,b=1,c[300001]={0};
long long ans=0;
priority_queue<int> s;
bool cmp(point d,point e)
{
if(d.m==e.m)
{
return d.v<e.v;
}
return d.m<e.m;
}
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>a[i].m>>a[i].v;
}
for(int i=1;i<=k;i++)
{
cin>>c[i];
}
sort(c+1,c+k+1);
sort(a+1,a+n+1,cmp);
a[n+1].m=2147483647;
for(int i=1;i<=n+1;i++)
{
while(a[i].m>c[b])
{
if(!s.empty())
ans+=s.top(),s.pop();
b++;
if(b>k)
break;
}
if(b>k)
break;
s.push(a[i].v);
}
cout<<ans;
return 0;
}
这个代码是88分第12个点wa了 两个程序区别只有变量在结构体后声明变成了在前面 想请教下变量声明位置也会影响程序吗?