有 C 头奶牛想晒太阳,第 i 头( 1≤i≤C )奶牛能够忍受 [minSPF i ,maxSPF i ] 区间内的阳光强度,强度太强晒伤,太低没感觉~
现有 L 种兽用防晒霜,第 i 种( 1≤i≤L )有 cover i 瓶,涂一瓶这种防晒霜后,身体接收到的阳光强度就稳定为 SPF i 。
已知每头奶牛至多会选择一种防晒霜且至多涂抹一瓶(多了会中毒…),问:最多可以满足多少头奶牛去晒太阳?
输入描述
第 1 行,两个整数 C,L 接下来 C 行,每行两个整数 minSPF i ,maxSPF i ,表示一头奶牛 接下来 L 行,每行两个整数 SPF i ,cover i ,表示一种防晒霜
【测试数据范围】1≤C,L≤2500,1≤minSPF i ≤maxSPF i ≤1000,1≤SPF i ≤1000,1≤cover i ≤30
输出描述
输出一行一个整数,表示至多有多少头牛能去晒太阳
#include<bits/stdc++.h>
using namespace std;
struct cow
{
int minn,maxn;
}s[2501];
struct spf
{
int cover,sl;
}q[2501];
bool cmp1(cow a,cow b)
{
if (a.maxn==b.maxn) return a.minn<b.minn;
return a.maxn<b.minn;
}
bool cmp2(spf a,spf b)
{
return a.sl<b.sl;
}
int main()
{
int c,l,cnt=0;
cin>>c>>l;
for (int i=1;i<=c;i++)
{
cin>>s[i].minn>>s[i].maxn;
}
for (int i=1;i<=l;i++)
{
cin>>q[i].sl>>q[i].cover;
}
sort(s+1,s+1+c,cmp1);
sort(q+1,q+1+l,cmp2);
for (int j=1;j<=l;j++)
{
for (int i=1;i<=c;i++)
{
if (q[j].sl>=s[i].minn&&q[j].sl<=s[i].maxn&&q[j].cover>=1)
{
q[j].cover--;cnt++;break;
}
}
}
cout<<cnt;
return 0;
}