#include <stdio.h>
void main()
int complex(zj,xc,y);
double zj[4][2],xc[2],y[1];
{double a[2],b[2];
double s[2],s1[2],s3[2];
double max,min;
double xr[2],ss=0;
double dum[2],dumy[K];
double h0;
int i,j,k,h,l;
for(i=0;i<K;i++)
dumy[i]=fun(zj[i]);
mm:h=0;l=0;
min=dumy[0];max=dumy[0];
for(k=1;k<K;k++)
{if(dumy[k]>=max)
{max=dumy[k];h=k;}
 if(dumy[k]<=min)
{min=dumy[k];l=k;}}
ss=0.0;
for(i=0;i<K;i++)
ss=ss+pow(dumy[i]-min,2);
ss=sqrt(ss/(K+0.0));
if(ss<=e*10)
{for(k=0;k<2;k++)
xc[k]=zj[l][k];
y[0]=dumy[l];return(l);}
for(i=0;i<K-2;i++)
{s1[0]=zj[i][0]-zj[i+1][0];
s1[1]=zj[i][1]-zj[i+1][1];
ss=sqrt(s1[0]*s1[0]+s1[1]*s1[1]);
s1[0]=s1[0]/ss;s1[1]=s1[1]/ss;
for(j=i+2;j<K;j++)
{s2[0]=zj[i][0]-zj[j][0];s2[1]=zj[i][1]-zj[j][1];
ss=sqrt(s2[0])*s2[0]+s2[1]*s2[1]);
s2[0]=s2[0]/ss;s2[1]=s2[1]/ss;
if(fabs(s1[0]*s2[1]-s1[1]*s2[0])<0.1)
{if(fabs(s2[0])>fabs(s2[0]))
{s3[1]=1.0;s3[0]=-s2[1]/s2[0];}
else
{s3[0]=1.0;s3[1]=-s2[0]/s2[1];}
ss=sqrt(s3[0]*s3[0]+s3[1]*s3[1]);
s3[0]=s3[0]/ss;s3[1]=s3[1]/ss;
dum[0]=zj[j][0];dum[1]=zj[j][1];
h0=0.5;
for( ; ;)
{zj[j][0]=dum[0]+h0*s3[0];zj[j][l]=dum[l]+h0*s3[l];
if(tj(zj[j]))break;
zj[j][0]=dum[0]-h0*s3[0];zj[j][l]=dum[l]-h0*s3[l];
if(tj(zj[j]))break;
h0=0.5*h0;}
dumy[j]=fun(zj[j]);
}}}
for(k=0;k<2;k++)
xc[k]=0.0;
for(k=0;k<K;k++)
{if(k!=h)
{for(i=0;i<2;i++)
xc[i]=xc[i]+zj[k][i];}}
for(i=0;i<2;i++)
xc[i]=xc[i]/(K-1.0);
h0=0.1;y[0]=dumy[h];
s[0]=xc[0]-zj[h][0];s[l]=xc[l]-zj[h][l];
ss=sqrt(s[0]*s[0]+s[l]*s[l]);
s[0]=s[0]/ss;s[l]=s[l]/ss;xc[0]=zj[h][0];xc[l]=zj[h][l];
if(JTOOD(xc,y,h0,e,s)==0)
{h0=0.5;
s[0]=zj[h][0]-zj[l][0];s[1]=zj[h][l]-zj[l][1];
for( ; ; )
{zj[h][0]=zj[l][0]+h0*s[0];zj[h][l]=zj[l][1]+h0*s[1];
if(tj(zj[h]))break;
h0=0.5*h0;}
dumy[h]=fun(zj[h]);
}
else
{printf("[%f %f]",xc[0],x[1]);
for(i=0;i<2;i++)
zj[h][i]=xc[i];
dumy[h]=y[0];
printf("=%f huai%d",y[0],h);
}
goto mm;
}
double fun(double x1,x2)
{double y;
 y=(x1-x2)*(x1-x2)+(x1+x2)*(x1+x2);
 return y}
void max(double x,double y,double z)
{double m,n;
 m=a>b?a:b;
 n=m>c?m:c;
return (n)
}
void min(double x,y,z)
{double m,n;
m=a<b?a:b;
n=m<c?m:c;
return (n);
}    
double func(x1,x2)
double x1,x2;
{double y;
y=10*(x1+x2-5)*(x1+x2-5)+(x1-x2)*(x1-x2);
K=K+1;
return(y);}
 
int JGOOD(x0,y0,h,e,S)
double x0[3],y0[1],h,e,S[3];
{double x1[3],y1;
int Flag=0,i,j,k=0;
double g[8];
k=0;
Flag=0;
if(h<e)e=h/4.0;
for( ; ;)
{for(i=0;i<n;i++)
 x1[i]=x0[i]+h*S[i];
 if(gau(x1[0],x1[1],x1[2],g)==1)
 y1=func(x1[0],x1[1],x1[2]);
else y1=y0[0]+1;
if(fabs(h)<e)
  {if(y1<y0[0])
    {for(i=0;i<n;i++)
x0[i]=x1[i];
gengxin+=1;
y0[0]=y1;return(k+1);
}
else
{return(k);}
}
if(y1<y0[0])
{if(Flag==0)
{h=h+h;k=k+1;}
else
{h=0.5*h;k=k+1;}
}
else{if(k==0)
{h=-0.5*h;goto NEWLoop;}
}
}
}