记录编号 |
359300 |
评测结果 |
AAAAAAAAAAAAAAA |
题目名称 |
奔跑 |
最终得分 |
100 |
用户昵称 |
Shirry |
是否通过 |
通过 |
代码语言 |
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;
}