www.pudn.com > zhejiang_university_acm_onlinejudge_code.rar > zp1010_w.cpp


//--------------------------------------------------------------------------- 
 
#pragma hdrstop 
 
//--------------------------------------------------------------------------- 
 
#pragma argsused 
#define cin fin 
#include  
#include  
#include  
#include  
float ax[1100],ay[1100]; 
inline int cmp(float d) 
{ 
  if(fabs(d)<1e-8) 
    return 0; 
  return (d>0)?1:-1; 
} 
inline int fc(int i,int j) 
{ 
  float x1,x2,x3,x4,y1,y2,y3,y4; 
  int k1,k2; 
  x1=ax[i+1]-ax[i];y1=ay[i+1]-ay[i]; 
  x2=ax[j]-ax[i];y2=ay[j]-ay[i]; 
  x3=ax[j+1]-ax[i];y3=ay[j+1]-ay[i]; 
  k1=cmp(x1*y2-x2*y1); 
  k2=cmp(x1*y3-x3*y1); 
  if (k1*k2>0) 
    return 0; 
  else 
    if (k1*k2<0) return 1; 
    else 
    { 
      if (cmp(ax[i]-ax[i+1])==1) 
        { x1=ax[i]; x2=ax[i+1]; } 
      else 
        { x2=ax[i]; x1=ax[i+1]; } 
      if (cmp(ax[j]-ax[j+1])==1) 
        { x3=ax[j]; x4=ax[j+1]; } 
      else 
        { x4=ax[j]; x3=ax[j+1]; } 
 
      if (cmp(ay[i]-ay[i+1])==1) 
        { y1=ay[i]; y2=ay[i+1]; } 
      else 
        { y2=ay[i]; y1=ay[i+1]; } 
      if (cmp(ay[j]-ay[j+1])==1) 
        { y3=ay[j]; y4=ay[j+1]; } 
      else 
        { y4=ay[j]; y3=ay[j+1]; } 
 
      if (cmp(x1-x2)==0) 
        { x1=y1; x2=y2; x3=y3; x4=y4; } 
      if (cmp(y1-y2)==0) 
        { y1=x1; y2=x2; y3=x3; y4=x4; } 
 
      if (k1==0 && k2!=0) 
        if ((cmp(ax[j]-x2)>=0 && cmp(ax[j]-x1)<=0) || 
            (cmp(ay[j]-y2)>=0 && cmp(ay[j]-y1)<=0)) 
          return 1; 
        else 
          return 0; 
      else 
        if (k1!=0 && k2==0) 
          if ((cmp(ax[j+1]-x2)>=0 && 
               cmp(ax[j+1]-x1)<=0) || 
              (cmp(ay[j+1]-y2)>=0 && 
               cmp(ay[j+1]-y1)<=0)) 
            return 1; 
          else 
            return 0; 
        else 
          if (((cmp(x3-x2)>=0 && cmp(x3-x1)<=0) || 
               (cmp(x4-x2)>=0 && cmp(x4-x1)<=0))|| 
              ((cmp(y3-y2)>=0 && cmp(y3-y1)<=0) || 
               (cmp(y4-y2)>=0 && cmp(y4-y1)<=0))) 
            return 1; 
          else 
            return 0; 
    } 
} 
int main(int argc, char* argv[]) 
{ 
  ifstream fin("d:\in1010.txt"); 
  float s; 
  int n,nt,i,j,t; 
  cin>>n; 
  nt=1; 
  while (n) 
  { 
    if (nt-1) cout<>ax[i]>>ay[i]; 
    ax[0]=ax[n];ay[0]=ay[n]; 
    t=0; 
    if (n<3) t=1; 
    if (!t) 
      for (j=2;j>n;nt++; 
  } 
  return 0; 
} 
//---------------------------------------------------------------------------