比赛 防止浮躁的小练习v0.2 评测结果 WWWWWWWWWWWWWWWWWWWWW
题目名称 贴海报 最终得分 0
用户昵称 槿柒 运行时间 0.040 s
代码语言 C++ 内存使用 0.30 MiB
提交时间 2016-10-08 10:39:36
显示代码纯文本
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
const int maxn=1010;
struct Node{
	bool type;int pos,num;
	bool operator < (const Node &a)const {
		if(pos!=a.pos)return pos<a.pos;
		if(type!=a.type)return type;
		return a.num<num;
	}
}a[maxn<<1];
int n,m,r[maxn];
bool f[maxn]={0};
priority_queue<int> q;
int main()
{
	freopen("ha14d.in","r",stdin);
	freopen("ha14d.out","w",stdout);
	scanf("%d%d",&n,&m);
	q.push(0);
	for(int i=1;i<=m;i++){
		scanf("%d%d",&a[i].pos,&r[i]);r[i]++;
		a[i+m].pos=r[i];
		a[i].num=a[i+m].num=i;
		a[i].type=1;a[i+m].type=0;
	}
	m<<=1;
	sort(a+1,a+1+m);
	for(int i=1;i<=m;i++)
		printf("%d %d %d\n",a[i].pos,a[i].type,a[i].num);
	for(int i=1;i<=m;i++){
		if(a[i].type)q.push(a[i].num);
		else
			while(!q.empty() && r[q.top()]<=a[i].pos)q.pop();
		f[q.top()]=1;
		printf("%d ",q.top());
	}
	m>>=1;int cnt=0;
	for(int i=1;i<=m;i++)if(f[i])cnt++;
	printf("%d",cnt);
	return 0;
}