比赛 平凡的题目 评测结果 AAAAATTTTA
题目名称 平凡的题面 最终得分 60
用户昵称 Satoshi 运行时间 4.014 s
代码语言 C++ 内存使用 3.94 MiB
提交时间 2015-11-03 11:52:46
显示代码纯文本
#include <fstream>
#include <algorithm>
#include <vector>
#define N 100010
using namespace std;
ifstream in("bg.in");
ofstream out("bg.out");
int n,m;
int ans=0;
int o[N]={0};
vector<int> G[N];
bool l[N]={0},vis[N]={0};
int f[N]={0};
class point
{
public:
	int x,y;
	void print()
	{
		out<<x<<' '<<y<<endl;
	}
}p[N],q[N];
bool com(point a,point b)
{
	if(a.x==b.x)return a.y<b.y;
	else return a.x<b.x;
}
void read()
{
	int i,j;
	in>>n>>m;
	for(i=1;i<=n;i++)in>>o[i];
	for(i=1;i<=m;i++)in>>p[i].x>>p[i].y;
	//sort(o+1,o+n+1);
	//sort(p+1,p+m+1,com);
}
bool DFS(int u)
{
	int i,v;
	for(i=0;i<G[u].size();i++)
	{
		v=G[u][i];
		if(!l[v])
		{
			l[v]=1;
			if(!f[v]||DFS(f[v]))
			{
				f[v]=u;
				return 1;
			}
		}
	}
	return 0;
}
void work()
{
	int i,j,ans=0;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
		{
			if(p[j].x<=o[i]&&o[i]<=p[j].y)
			{
				G[i].push_back(j);
			}
		}
	}
	//out<<sum<<endl;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)l[j]=0;
		if(DFS(i))ans++;
	}
	out<<ans<<endl;
}
int main()
{
	read();
	work();
	return 0;
}