比赛 东方版NOIP模拟赛 评测结果 AAWAAAAAAA
题目名称 Yukari 最终得分 90
用户昵称 不错封ID几十块 运行时间 0.270 s
代码语言 C++ 内存使用 2.60 MiB
提交时间 2015-10-28 21:59:15
显示代码纯文本
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cmath>
#define maxn 300010
#define inf 0x7fffffff
using namespace std;
struct td
{
	int t;
	bool r;
	bool operator<(const td& a)const
	{
		return (t<a.t);
	}
}mt[maxn];
int n;
int e;
int xl,xr,yl,yr;
int main()
{
	freopen("camera.in","r",stdin);
	freopen("camera.out","w",stdout);
	int i;
	int tt;
	int mxt;
	int ans;
	int xopt,xedt;
	int yopt,yedt;
	int xi,yi,ui,vi;
	e=0;
	scanf("%d",&n);
	scanf("%d%d%d%d",&xl,&yl,&xr,&yr);
	for(i=1;i<=n;i++){
		scanf("%d%d%d%d",&xi,&yi,&ui,&vi);
		xopt=-1;
		xedt=-1;
		yopt=-1;
		yedt=-1;
		if(ui<0){
			if(xi>xr){
				xopt=((xr-xi)/ui)+((xr-xi)%ui!=0);
				xedt=((xl-xi)/ui);
			}
			else{
				if(xi>=xl){
					xopt=0;
					xedt=(xl-xi)/ui;
				}
			}
		}
		if(ui>0){
			if(xi<xl){
				xopt=((xl-xi)/ui)+((xl-xi)%ui!=0);
				xedt=((xr-xi)/ui);
			}
			else{
				if(xi<=xr){
					xopt=0;
					xedt=(xr-xi)/ui;
				}
			}
		}
		if(vi<0){	
			if(yi>yr){
				yopt=((yr-yi)/vi)+((yr-yi)%vi!=0);
				yedt=((yl-yi)/vi);
			}
			else{
				if(yi>=yl){
					yopt=0;
					yedt=(yl-yi)/vi;
				}
			}
		}
		if(vi>0){
			if(yi<yl){
				yopt=((yl-yi)/vi)+((yl-yi)%vi!=0);
				yedt=((yr-yi)/vi);
			}
			else{
				if(yi<=yr){
					yopt=0;
					yedt=(yr-yi)/vi;
				}
			}
		}
		if(ui==0){
			if(xl<=xi && xi<=xr){
				xopt=0;
				xedt=inf;
			}
		}
		if(vi==0){
			if(yl<=yi && yi<=yr){
				yopt=0;
				yedt=inf;
			}
		}
		if(xopt!=-1 && yedt!=-1){
			tt=max(xopt,yopt);
			xi+=tt*ui;
			yi+=tt*vi;
			if(xl<=xi && xi<=xr && yl<=yi && yi<=yr){
				e++;
				mt[e].t=tt;
				mt[e].r=true;
				e++;
				mt[e].t=min(xedt,yedt);
				mt[e].r=false;
			}
		}
	}
	sort(&mt[1],&mt[e+1]);
	tt=0;
	mxt=-inf;
	for(i=1;i<=e;i++){
		tt+=(mt[i].r*2-1);
		if(tt>mxt){
			ans=mt[i].t;
			mxt=tt;
		}
	}
	printf("%d\n",ans);
	return 0;
}