// Problem G Ver. 1.0 // Coding & Debug : 150min #include #include #define PI 3.1415926535897932385 int lines; struct { int len, count; int movs; int mov[64][3]; } line[6]; int max; int x,y; int startdeg; void find(int l,int deg,int s,int mov[]) { int dx = mov[0], dy = mov[1]; int i,j; int d=0; if (l1024) return; } if (l==lines-1) { startdeg = mov[2]; } if (l*300max*2) max = s/2; } x-=dx; y-=dy; return; } if ( lline[i].movs/4) break; if ( (d-line[i].mov[j][2]&1023) > 512) continue; find(l-1,d,s, line[i].mov[j]); } line[i].count++; if (l==lines) break; } x-=dx; y-=dy; } int main() { FILE *fp = fopen("G.txt","r"); int n,i,j,k,l; int dummy[]={0,0,0}; while(fscanf(fp,"%d",&n) && n) { for (j=0;j<6;j++) line[j].count = 0; k=0; for (i=0;i=-l;x--) { for (y=0;y<=l;y++) { if (x*x+y*y == l*l) { line[k].mov[line[k].movs][0]=x; line[k].mov[line[k].movs][1]=y; line[k].mov[line[k].movs][2]=(int)((atan2(y,x)+PI)*1024/(2*PI))&1023; line[k].movs++; } } } for (x=0;x