比赛 2024暑期C班集训4 评测结果 AAAAAAAAAA
题目名称 梦境 最终得分 100
用户昵称 wdsjl 运行时间 0.388 s
代码语言 C++ 内存使用 2.64 MiB
提交时间 2024-07-04 11:58:21
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;

const int N = 200010;

struct node{
    int l;
    int r;
}a[N];

priority_queue<node>q;

bool operator < (const node &x,const node &y){
    return x.r>y.r;
}

bool cmp(node x,node y){
    return x.l<y.l;
}

int n,m,t[N],used[N],res;

int main(){
    freopen("dream.in","r",stdin);
    freopen("dream.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        scanf("%d%d",&a[i].l,&a[i].r);
    }
    sort(a+1,a+1+n,cmp);
    for(int i=1;i<=m;i++){
        scanf("%d",&t[i]);
    }
    sort(t+1,t+1+m);
        int j=1;
    for(int i=1;i<=m;i++){
//        cout<<i<<' '<<j<<endl;
        while(j<=m){
            if(a[j].l<=t[i]&&used[j]==0){
//                cout<<j<<"jjj"<<endl;
                q.push(a[j]);
                used[j]++;
            }
            if(a[j].l>t[i])break;
            j++;
//            cout<<i<<' '<<j<<endl;
        }
//        while(a[j].l<=t[i]&&used[j]==0){
//            q.push(a[j]);
//            used[j]++;
//            j++;
//            cout<<"y"<<endl; 
//        }
        while(q.size()&&q.top().r<t[i]){
            q.pop();
        }
        if(q.size()){
//            cout<<i<<" "<<q.top().l<<endl;
            res++;
            q.pop();
            continue;
        }else{
            continue;
        }
    }
    printf("%d",res);
    return 0;
}