比赛 |
东方版NOIP模拟赛 |
评测结果 |
AAWTTTTTTA |
题目名称 |
Yukari |
最终得分 |
30 |
用户昵称 |
Neptune |
运行时间 |
6.005 s |
代码语言 |
C++ |
内存使用 |
2.20 MiB |
提交时间 |
2015-10-28 21:14:03 |
显示代码纯文本
#include<stdio.h>
#include<algorithm>
using namespace std;
struct node {int x,s;};
int comp(node a,node b){return a.x<b.x;}
node fll[200100];
int n,l,r,u,d,now=1;
int mark[100010];
int l1,l2,v1,v2,aim1,aim2,t,tmp;
int check1(int x,int y,int vx,int vy)
{
if(x<l&&vx<=0)return 0;
if(x>r&&vx>=0)return 0;
if(y<d&&vy<=0)return 0;
if(y>u&&vy>=0)return 0;
return 1;
}
int check2(int x,int y)
{
if(x>=l&&x<=r&&y<=u&&y>=d)return 1;
return 0;
}
int check(int x,int y,int vx,int vy)
{
if(!check1(x,y,vx,vy))return 0;
t=0;
aim1=-1;
aim2=-1;
tmp=0;
for(;;)
{
if(!check1(x+vx*(t-2),y+vy*(t-2),vx,vy))return 0;
if(check2(x+vx*t,y+vy*t))
{
if(tmp==0)aim1=t;
tmp=1;
}
else if(tmp==1)
{
aim2=t-1;
return 1;
}
t++;
}
}
int main()
{
freopen("camera.in","r",stdin);
freopen("camera.out","w",stdout);
scanf("%d %d %d %d %d",&n,&l,&d,&r,&u);
for(int i=1;i<=n;i++)
{
scanf("%d %d %d %d",&l1,&l2,&v1,&v2);
if(check(l1,l2,v1,v2))
{
fll[now].x=aim1;
fll[now+1].x=aim2;
fll[now].s=fll[now+1].s=i;
now=now+2;
}
else
{
n--;
i--;
}
}
int ans,tmp=0,zuida=-1,biao=0;
sort(fll+1,fll+now,comp);
for(int i=1;i<now;i++)
{
if(biao)
{
tmp--;
biao=0;
}
if(!mark[fll[i].s])
{
mark[fll[i].s]=1;
tmp++;
}
else
{
mark[fll[i].s]=0;
biao=1;
}
if(zuida<tmp)
{
zuida=tmp;
ans=fll[i].x;
}
}
printf("%d",ans);
}