比赛 20170912 评测结果 AAWWWWWWWW
题目名称 平凡的题面 最终得分 20
用户昵称 Arrow 运行时间 0.248 s
代码语言 C++ 内存使用 1.65 MiB
提交时间 2017-09-12 21:50:27
显示代码纯文本
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<utility>
using namespace std;
#define MAX 100010
#define R first
#define L second
typedef pair <int,int> pii;

	int n,m,ans=0;
	int len[MAX]={0};
	pii qj[MAX];
	bool chosen[MAX]={0},used[MAX]={0};
	
void work()
{
	sort(qj,qj+m);
	sort(len,len+n);
	int tmp_n=0,tmp_m=0;
	while(tmp_n<n||tmp_m<m)
	{
		if(!used[tmp_m]&&!chosen[tmp_n]&&len[tmp_n]>=qj[tmp_m].L&&len[tmp_n]<=qj[tmp_m].R)
		{
			chosen[tmp_n]=1;
			used[tmp_m]=1;
			if(tmp_n<n-1)
				tmp_n++;
			if(tmp_m<m-1)
				tmp_m++;
			ans++;
		}
		else
		{
			if(tmp_n==n-1&&tmp_m==m-1)
				break;
			if(tmp_n==n-1)
			{
				tmp_m++;
				continue;
			}
			if(tmp_m==m-1)
			{
				tmp_n++;
				continue;
			}
			if(len[tmp_n]<qj[tmp_m].L)
				tmp_n++;
			else
				tmp_m++;
		}
	}
}

int main()
{
	freopen("bg.in","r",stdin);
	freopen("bg.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=0;i<n;i++)
		scanf("%d",&len[i]);
	for(int i=0;i<m;i++)
		scanf("%d%d",&qj[i].L,&qj[i].R);
	work();
	printf("%d\n",ans);
return 0;
}