PersonalCorpus 版 (精华区)
1029758 Big Guava ... 478 Accepted 0:00.060
64 2002/08/19 07:15:07.011
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <ctype.h>
#include <math.h>
double multi(double a, double b, double c, double d, double e, double
f)
{
return (c-a)*(f-b)-(e-a)*(d-b);
}
void main()
{
#ifndef ONLINE_JUDGE
freopen("c:\\uva\\input478.txt","r",stdin);
freopen("c:\\uva\\output478.txt","w",stdout);
#endif
double f[100][6];
char fm[100];
double a,b;
int i,j,k;
char s[100];
bool flag;
k=0;
while (1) {
gets(s);
if (strcmp(s,"*")==0) break;
fm[k]=s[0];
if (fm[k]=='r')
sscanf(s+2,"%lf%lf%lf%lf",&f[k][0],&f[k][1],&f[k][2],
&f[k][3]);
else
if (fm[k]=='c')
sscanf(s+2,"%lf%lf%lf",&f[k][0],&f[k][1],&f[k][2]);
else {
sscanf(s+2,"%lf%lf%lf%lf%lf%lf",&f[k][0],&f[k][1],&f[k][2],
&f[k][3],&f[k][4],&f[k][5]);
if (multi(f[k][0],f[k][1],f[k][2],f[k][3],f[k][4],
f[k][5])>0) {
a=f[k][4];
f[k][4]=f[k][2];
f[k][2]=a;
a=f[k][5];
f[k][5]=f[k][3];
f[k][3]=a;
}
}
k++;
}
j=1;
while (scanf("%lf%lf\n",&a,&b)==2) {
if ((a==9999.9)&&(b==9999.9)) break;
flag=true;
for (i=0;i<k;i++) {
if (fm[i]=='c') {
if
(sqrt((a-f[i][0])*(a-f[i][0])+(b-f[i][1])*(b-f[i][1]))<f[i][2]) {
printf("Point %d is contained in figure %d\n",j,
i+1);
flag=false;
}
continue;
}
if (fm[i]=='r') {
if
((f[i][0]<a)&&(f[i][2]>a)&&(f[i][1]>b)&&(f[i][3]<b)) {
printf("Point %d is contained in figure %d\n",j,
i+1);
flag=false;
}
continue;
}
if (fm[i]=='t')
if ((multi(f[i][0],f[i][1],f[i][4],f[i][5],a,b)>0)&&
(multi(f[i][0],f[i][1],a,b,f[i][2],f[i][3])>0)&&
(multi(f[i][4],f[i][5],f[i][2],f[i][3],a,b)>0)) {
printf("Point %d is contained in figure %d\n",j,
i+1);
flag=false;
}
}
if (flag) printf("Point %d is not contained in any figure\n",
j);
j++;
}
}
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.455毫秒