#include #define gets(B) fgets((B),C-(B)+256,stdin),(B[strlen(B)-1]='\0'),1 #define M typedef #define N( a)=r=(a)+j #define S f(; G; )D[B[R=i[--G]]=F+=Fy=m-G;F= F+m?F:(G--, m);}} _ K(){ b H,R; f(H=0;H= j) F = 1; S; } _ L() { b H, F,G; c R ; f( H =0; H < j; H ++) B g =0; O =-1; f( G = R = 0; R < j; R++ ){ f(; R < j && !( F = B[ R ]); R = h[ R ] + k) B [i[ G ++] = R ] = p; S; } } _ U() { e X [ 256 ] ,W; b H; W = t; f ( H = 0; H < o; H ++ ) { X g = W; W +=D g ;} f( H =0; H < j; H ++) if( A g - B g) * X[ B g ] ++ = s g; { XMotionEvent * V = r = t ; W = t; f ( H = 0; H < o ; H ++ ) { XDrawPoints (q , v ,x g, W,X g -W, CoordModeOrigin ) ; W += D g ; D g = 0 ; } f(; XPending(q)+! ++O; V->type- ButtonPress?( k =V ->x+ V -> y * n - l) : ( O = - 42 ) ) XNextEvent ( q , r = V ) ; } } _ main ( b X , char *Wa[]) { d*W=Wa; b H, F ,G; c R; if ( X < 3 ) { puts( "tvr: mode size < cmap" ); exit(0);} P(); I(*++ W); w = y %12; I(*++ W); n = y *2; j = n * n ; P ( ) ; m = y ; l = j / 2 + m ; q=XOpenDisplay ( 0 ) ; Q ( 0 ) ; u = v ; Q ( PointerMotionMask |ButtonPressMask ) ; I ( 0 ) ; o =y ; p = o -1 ; { XColor F ; Colormap G; f ( H = 0 ; H < o ; H++){ I(0); XParseColor(q,G =XDefaultColormap ( q , z ) , r = B , & F ) ; XAllocColor (q , G , & F ) ; XSetForeground (q,x g = XCreateGC ( q, u ,0 , 0 ) , F .pixel ) ; } } P ( ); J (); f ( F =R = G =H = 0; H < j; ) if(++F >= p || ( R = h [ R ] +G)>=j ) { D [ B g = F ] ++; R = l + k; G= ++H -R; F =0; } H=j; U(); v= u; f(F=w/4; ; A+=H-=H+H,B-=H )(O<0?L:*("tvr@cs.hut.fi." +7*F)?F^1?Y:K:L)() ,(U)(); }