贪心加优先队列
代码如下
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
typedef pair<int,int> p;
priority_queue<int,vector<int>,greater<int> > q;
p cow[2505],bot[2505];
int main()
{
int c,l;
while(~scanf("%d%d",&c,&l))
{
for(int i=0; i<c; i++)
{
scanf("%d%d",&cow[i].first,&cow[i].second);
}
for(int i=0; i<l; i++)
{
scanf("%d%d",&bot[i].first,&bot[i].second);
}
sort(cow,cow+c);
sort(bot,bot+l);
int ans=0,j=0;
for(int i=0; i<l; i++)
{
while(j < c&& cow[j].first <= bot[i].first)
{
q.push(cow[j].second);
j++;
}
while(!q.empty() && bot[i].second)
{
int x = q.top();
q.pop();
if(x < bot[i].first) continue;
ans++;
bot[i].second--;
}
}
printf("%d\n", ans);
}
}