记录编号 359300 评测结果 AAAAAAAAAAAAAAA
题目名称 奔跑 最终得分 100
用户昵称 GravatarShirry 是否通过 通过
代码语言 C++ 运行时间 0.729 s
提交时间 2016-12-21 23:08:47 内存使用 1.45 MiB
显示代码纯文本
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<set>
#include<vector>
using namespace std;
struct poi{
	int t;
	int l;
};
poi A[100009];
int B[100009];
int cmp(int x,int y){
	return A[x].t<A[y].t;
}
set<int>C;
set<int>Active;
int main(){
	freopen("stampede.in","r",stdin);
	freopen("stampede.out","w",stdout);
	int N,x,y,r,temp=0;
	scanf("%d",&N);
	for(int i=1;i<=3*N;i++)B[i]=i;
	for(int i=1;i<=N;i++){
		temp++;
		scanf("%d%d%d",&x,&y,&r);
		A[temp].t=(abs((double) x)-1)*r;
		A[temp].l=y;
		temp++;
		A[temp].t=abs((double) x)*r;
		A[temp].l=0-y;
	}
	sort(B+1,B+temp+1,cmp);
	int a=A[B[1]].t;
	for(int j=1;j<=temp;j++){
		int i=B[j];
		if(A[i].t==a){
			if(A[i].l>=0){
				Active.insert(A[i].l);
			}
			if(A[i].l<0){
				int k=0-A[i].l;
				Active.erase(k);
			}	
		}
		if(A[i].t!=a){
			int p=99999999;
			set<int>::iterator k;
			for(k=Active.begin();k!=Active.end();k++){
				int b=*k;
				p=min(p,b);
			}
			if(p!=99999999)C.insert(p);
			a=A[i].t;
			if(A[i].l>0){
				Active.insert(A[i].l);
			}
			if(A[i].l<0){
				int k=0-A[i].l;
				Active.erase(k);
			}
		}
	}
	/*set<int>::iterator k;
	for(k=C.begin();k!=C.end();k++){
		printf("%d\n",*k);
	}*/
	//for(int i=0;i<C.size();i++)printf("%d\n",C[i]);
	printf("%d\n",C.size());
	return 0;
}