#include <bits/stdc++.h>
using namespace std;
struct arrow
{
long long d,p;
}arr[50050];
bool cmp(arrow a1,arrow a2)
{
return a1.d<a2.d;
}
long long b[50050];
int main()
{
long long n,m,i,flag,cnt,ans;
while(cin>>n>>m)
{
for(i=0;i<n;i++)
scanf("%lld\n",&b[i]);
for(i=0;i<m;i++)
{
scanf("%lld%lld",&arr[i].d,&arr[i].p);
}
sort(b,b+n);
sort(arr,arr+m,cmp);
flag=1;
cnt=0;
ans=0;
priority_queue<long long> q;
for(i=0;i<n;i++)
{
for(;cnt<m&&arr[cnt].d<b[i];cnt++)
{
if(!q.empty())
{
if(q.top()>arr[cnt].p)
{
ans-=q.top();
q.pop();
q.push(arr[cnt].p);
ans+=arr[cnt].p;
}
}
}
if(cnt>=m)
{
flag=0;
break;
}
ans+=arr[cnt].p;
q.push(arr[cnt].p);
cnt++;
}
for(;cnt<m;cnt++)
{
if(!q.empty())
{
if(q.top()>arr[cnt].p)
{
ans-=q.top();
q.pop();
q.push(arr[cnt].p);
ans+=arr[cnt].p;
}
}
}
if(flag)
printf("%lld",ans);
else
printf("No Solution\n");
}
}
51nod 1191 消灭兔子
最新推荐文章于 2020-04-01 21:45:10 发布