记录编号 449752 评测结果 AAAAAAAAAA
题目名称 平凡的题面 最终得分 100
用户昵称 GravatarArrow 是否通过 通过
代码语言 C++ 运行时间 0.405 s
提交时间 2017-09-14 21:37:20 内存使用 0.32 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
#define PB push_back
struct ppi { int l,r,t; }; // p refers to the position ; b = 0 means this is qujian

	int n,m,ans=0;
	vector <ppi> a;

bool cmp_1(ppi x,ppi y)
{
	if(x.l==y.l&&x.t==y.t&&x.t==0)
		return x.r<y.r;
	else
		if(x.l==y.l&&x.t!=y.t)
			return x.t<y.t;
	return x.l<y.l;
}

struct cmp
{
	bool operator()(const ppi &x,const ppi &y)
	{
		if(x.r==y.r)
			return x.l>y.l;
		else
			return x.r>y.r;
	}
};

void work()
{
	sort(a.begin(),a.end(),cmp_1);
	priority_queue <ppi,vector<ppi>,cmp> Q;
	for(int i=0;i<(int)a.size();i++)
	{
		if(a[i].t==0)
			Q.push(a[i]);
		if(a[i].t==1&&!Q.empty())
		{
			while(!Q.empty())
			{
				ppi tmp=Q.top();
				Q.pop();
				if(tmp.r>=a[i].l)
				{
					ans++;
					break;
				}
			}
		}
	}
}

int main()
{
	freopen("bg.in","r",stdin);
	freopen("bg.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=0;i<n;i++)
	{
		int x;
		scanf("%d",&x);
		a.PB((ppi){x,x,1});
	}
	for(int i=0;i<m;i++)
	{
		int l,r;
		scanf("%d%d",&l,&r);
		a.PB((ppi){l,r,0});
	}
	work();
	printf("%d\n",ans);
return 0;
}