char *proobraz(char* input) { input = registr(input); input= ficha(input); for (int i=0;i<strlen(input);i++) { ssin(i,input); ccos(i,input); aasin(i,input); aacos(i,input); aatan(i,input); cceil(i,input); cch(i,input); eexp(i,input); aabs(i,input); ffloor(i,input); lln(i,input); llog(i,input); ssh(i,input); ssqrt(i,input); ttan(i,input); tth(i,input); cctg(i,input); aactg(i,input); ccth(i,input); } return input; }
Float calDiscreteErrorLinf(const arrayList &ao, const arrayList &ap) { assert(ao.size() == ap.size()); int n = ao.size(); arrayList aabs(n); for (int i = 0; i < n; i++) { aabs[i] = ABS(ap[i] - ao[i]); } return aabs.max(); }
void did() { dist=aabs(p1,p2); //printf("%d\n",dist); //printf("%d %d\n",check(p1,q1,p2,q2,dist/2-1),check(p2,q2,p1,q1,dist/2-1)); ans=minn(check(p1,q1,p2,q2,dist/2-1),check(p2,q2,p1,q1,dist/2-1)); //printf("%d\n",ans); if(ans!=INF) { ok=1; } }
int main() { while(scanf("%d",&n)!=EOF) { ok=ans=0; scanf("%d%d%d%d%d%d",&p1,&q1,&p2,&q2,&p3,&q3); if(aabs(p1,p2)<aabs(q1,q2)) { change(&p1,&q1); change(&p2,&q2); change(&p3,&q3); } did(); if(ok==0) { printf("NO\n%d\n",dist-1); } else { printf("YES\n%d\n",ans); } } return 0; }
int check(int p,int q,int pp,int qq,int step) { int i,l,r,x; int direc=pp>p?1:-1; //printf("%d %d %d\n",l,r,x); for(i=1;i<=step;i++) { l=maxx(1,maxx(q-i,qq-(dist-i))); //printf("%d %d %d %d\n",i,l,r,x); r=minn(n,minn(q+i,qq+(dist-i))); x=p+direc*i; //printf("%d %d %d %d\n",i,l,r,x); if(((x==p3-i||x==p3+i)&&havecross(l,r,q3-i,q3+i)) ||(aabs(p3,x)<i&&(inbox(q3-i,l,r)||inbox(q3+i,l,r)))) return i; } return INF; }