#include #include __int32_t z[1<<21]; void in(int j){if(j>127 || j< -127) exit(printf("Too big\n"));} int tk(char * K){ {int j=1<<21; while(j--) z[j]=0;} int i=0, j=0, k=0; while(*K){switch (*K) { case 'A': ++i; break; case 'B': --i; break; case 'C': ++j; break; case 'D': --j; break; case 'E': ++k; break; case 'F': --k; break; default: exit(printf("Bad letter:%c\n", *K));} in(i); in(j); in(k); int a = (1<<16)*(i+128) + (1<<8)*(j+128) + k+128; if(z[a>>5]&(1<<(a&31))) return 0; z[a>>5] |= (1<<(a&31)); ++K;} if(i || j || k) exit(printf("Curve not closed\n")); return 1; } int main(int argc, char** args){ printf("%d\n", tk(args[1])); return 0;}