| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
帮忙啊,坚强的wa中//pku2074.cpp
//wa中
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define N 5000
typedef struct _OBJ
{
double x1,x2,y;
}OBJ;
typedef struct _POINT
{
double x,y;
}POINT;
POINT array[N];
int pp;
double fmax(double a,double b)
{
return a>b?a:b;
}
double ShadowPoint (POINT p1,POINT p2,double y0)//p1 为上面点,p2 为下面 y0为property 的Y
{
return p2.x-(p1.x-p2.x)*(p2.y-y0)/(p1.y-p2.y);
}
void Shadow(OBJ H,OBJ A,OBJ PROP)
{
POINT p1,p2;
if(H.y>A.y&&A.y>PROP.y)
{
p1.x=H.x2,p1.y=H.y;
p2.x=A.x1,p2.y=A.y;
array[pp].x=ShadowPoint (p1,p2,PROP.y);//求左端点
p1.x=H.x1,p1.y=H.y;
p2.x=A.x2,p2.y=A.y;
array[pp].y=ShadowPoint (p1,p2,PROP.y);
pp++;
}
}
int Cmp(const void *a,const void *b)
{
return ( (POINT *)a)->x-( (POINT *)b)->x>0;
}
int main()
{
OBJ h,a,prop;
int n,ii;
double ans,lasty,tmp;
for(;scanf("%lf%lf%lf",&h.x1,&h.x2,&h.y);)
{
if(h.x1==0.&&h.x2==0.&&h.y==0.)
break;
scanf("%lf%lf%lf%d",&prop.x1,&prop.x2,&prop.y,&n);
if(!n)
{
printf("%lf\n",prop.x2-prop.x1);
continue;
}
for(pp=0;n--;)
{
scanf("%lf%lf%lf",&a.x1,&a.x2,&a.y);
Shadow(h,a,prop);
}
qsort(array,pp,sizeof(array[0]),Cmp);//按x1有序。
ans=array[0].x-prop.x1,lasty=prop.x1;
for(ii=0;ii<pp;ii++)
{
if(array[ii].x>lasty)
{
tmp=array[ii].x-lasty;
ans=fmax(ans,tmp);
lasty=array[ii].y;
}
if(array[ii].y>lasty)
lasty=array[ii].y;
/*
if(array[ii-1].y>prop.x2)
array[ii-1].y=prop.x2;
tmp=array[ii].x-array[ii-1].y;
ans=fmax(ans,tmp);
*/
}
ans=fmax(ans,prop.x2-lasty);
if(ans<=.000000000001)
printf("No View\n");
else
printf("%.2lf\n",ans);
}
return 0;
}
/*
2 6 6
0 15 0
3
12 13 1
2.5 4 1
1 2 1
2 6 6
0 15 0
4
12 13 1
1 15 5
3 4 1
1 2 1
1 5 5
0 10 0
1
0 15 1
0 0 0
*/
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator