记录编号 |
589306 |
评测结果 |
AAAAAAAAAA |
题目名称 |
梦境 |
最终得分 |
100 |
用户昵称 |
dream |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.849 s |
提交时间 |
2024-07-04 17:37:42 |
内存使用 |
2.86 MiB |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=200005,M=200005;
typedef pair<int,int>PL;
ll n,m;
struct node{
ll l,r;
}dr[N];
bool cmp(node x,node y){
if(x.l==y.l){
return x.r<y.r;
}
return x.l<y.l;
}
int t[M];
int main(){
freopen("dream.in","r",stdin);
freopen("dream.out","w",stdout);
cin>>n>>m;
for(int i=1;i<=n;i++){
ll l,r;
cin>>l>>r;
dr[i]={l,r};
}
for(int i=1;i<=m;i++){
cin>>t[i];
}
sort(dr+1,dr+n+1,cmp);
sort(t+1,t+m+1);
ll res=0;
priority_queue<int,vector<int>,greater<int>> q;
int s=1;
for(int i=1;i<=m;i++){
while(s<=n&&dr[s].l<=t[i]){
q.push(dr[s].r);
s++;
}
while(q.size()&&q.top()<t[i]){
q.pop();
}
if(q.size()){
res++;
q.pop();
}
}
cout<<res;
return 0;
}