/* * @(#) msp97_a.c - Problem 'A' ("10x10 chequers") solution * of the MSU Personal Programming Contest in 1997. * (c) 1998 Ivan Maidanski http://ivmai.chat.ru * Freeware program source. All rights reserved. ** * Language: ANSI C * Tested with: Borland C++ v3.1 * Last modified: 1998-09-20 16:55:00 GMT+04:00 */ /* Input data file: a.in */ #include /* FILE, fopen(), fscanf(), printf() */ #define N 10 int a[N][N]; int main() { int cnt; char c; int i,j,p,q,m,k; int bi,bj,bm; int i2,j2,p2,q2,p3,q3,p4,q4,m2,k2; int bi2,bj2; FILE *f=fopen("a.in","rt"); fscanf(f,"%*[^0-9]%d",&cnt); while (cnt--) { for (i=0;i1) m-=p*p; for (q=0;i+q1) m-=q*q; if (p || q) m+=(p+q+1)*(p+q+1); for (p=0;p1) m-=p*p; for (q=0;j+q1) m-=q*q; if (p || q) m+=(p+q+1)*(p+q+1); if (m>bm) bi=i,bj=j,bm=m; } printf("%d %d; ",bi+1,bj+1); for (bm=0,k=0;k1) m-=p*p; for (q=0;i+q1) m-=q*q; for (p2=0;p21) m-=p2*p2; for (q2=0;j+q21) m-=q2*q2; for (k2=k+1;k21) m2-=p3*p3; for (q3=0;i2+q31) m2-=q3*q3; for (p4=0;p41) m2-=p4*p4; for (q4=0;j2+q41) m2-=q4*q4; if (j2==j && i2-i-1==q) m2+=(p+q+q3+2)*(p+q+q3+2); else { if (p || q) m2+=(p+q+1)*(p+q+1); if (p3 || q3) m2+=(p3+q3+1)*(p3+q3+1); } if (i2==i && j2-j-1==q2) m2+=(p2+q2+q4+2)*(p2+q2+q4+2); else { if (p2 || q2) m2+=(p2+q2+1)*(p2+q2+1); if (p4 || q4) m2+=(p4+q4+1)*(p4+q4+1); } if (m2>bm) bi=i,bj=j,bi2=i2,bj2=j2,bm=m2; } } printf("%d %d, %d %d\n",bi+1,bj+1,bi2+1,bj2+1); } return 0; }