记录编号 |
449028 |
评测结果 |
AAAAAAAAAA |
题目名称 |
平凡的题面 |
最终得分 |
100 |
用户昵称 |
Shirry |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.360 s |
提交时间 |
2017-09-13 18:50:44 |
内存使用 |
3.36 MiB |
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;
const int maxn=200010;
int n,m,ans,maxx,b[maxn];
struct poi{
int l,r,len;
}a[maxn];
struct node{
int x;
bool operator < (const node&a)const{
return a.x<x;
}
}t,p;
priority_queue<node>q;
bool cmp(poi a,poi b){
if(a.l!=b.l)return a.l<b.l;
else return a.len>b.len;
}
int main(){
freopen("bg.in","r",stdin);
freopen("bg.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%d",&a[i].l),a[i].r=a[i].l,a[i].len=0;
for(int i=1;i<=m;i++)scanf("%d%d",&a[i+n].l,&a[i+n].r),a[i+n].len=a[i+n].r-a[i+n].l+1;
sort(a+1,a+1+n+m,cmp);
for(int i=1;i<=n+m;i++){
if(a[i].len)t.x=a[i].r,q.push(t);
else{
while(!q.empty()){
t=q.top();
if(t.x<a[i].l)q.pop();
else break;
}
if(q.size())ans++,q.pop();
}
}
printf("%d\n",ans);
return 0;
}