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毫秒