比赛 2024暑期C班集训4 评测结果 WWWAAWWTTT
题目名称 梦境 最终得分 20
用户昵称 djyqjy 运行时间 3.000 s
代码语言 C++ 内存使用 3.15 MiB
提交时间 2024-07-04 09:28:32
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=200010;
struct as
{
    long long l,r;
}a[N];
long long b[N];
int n,m;
long long ans;
bool cmp(as x,as y)
{
    if(x.r==y.r) return x.l<y.l;
    return x.r<y.r;
}
bool mark[N];
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("%lld%lld",&a[i].l,&a[i].r);
    for(int i=1;i<=m;i++)
        scanf("%lld",&b[i]);
    sort(a+1,a+1+n,cmp);
    sort(b+1,b+1+m);
    for(int i=1;i<=m;i++)
    {
        long long l=1,r=n;
        while(l<r)
        {
            long long mid=(l+r)/2;
            if(a[mid].r<b[i]) l=mid+1;
            else r=mid;
        }
        long long ll=1,rr=n;
        while(ll<rr)
        {
            long long mid=(ll+rr+1)/2;
            if(a[mid].l>b[i]) rr=mid-1;
            else ll=mid;
        }
        for(int j=l;j<=ll;j++)
        {
            if(a[j].l<=b[i]&&a[j].r>=b[i])
            {
                if(!mark[j])
                {
                    mark[j]=1;
                    ans++;
                    break;
                } 
            }
        }
    }
    printf("%lld",ans);
    return 0;
}