40 lines
1.7 KiB
C
40 lines
1.7 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
|
|
int Q
|
|
#define U\
|
|
x=D[i] >> 32, \
|
|
y= D[i] & 0xffffffff
|
|
(const void * A, const
|
|
void*B){int64_t a= *(int64_t
|
|
|
|
*) A,b=*(
|
|
int64_t*)B;
|
|
return a>b?a
|
|
<b?-1:0:1;}
|
|
int main(){
|
|
size_t n=0,a=
|
|
500,i,l,X=0,Y /***/
|
|
=0,t=0;char c /*********/
|
|
;int64_t*D= /***************/
|
|
malloc(sizeof( /*******************/
|
|
int64_t)*a),L,R /**********************/
|
|
,x,y;while(scanf /************************/
|
|
("%ld,%ld\n",&L, /************************/
|
|
&R)==2){if(n+1> /************************/
|
|
a)D= realloc(D, /*************/ sizeof(
|
|
int64_t)*(a+=500)) /**/ ;D[n++]=(L<<32) |R;}
|
|
while(scanf("%*" "[^xy]%c=%ld\n",&c,&L )==2)
|
|
{for(i =0;i<n;i++){U;if(c=='x'&&x>L) x=2*L-x
|
|
;else if(c=='y'&&y>L)y=2*L-y;D[i]= y|(x<<32)
|
|
;}qsort(D,n,sizeof(int64_t),Q);for(i=1,l=D[0 ];i<n;i++)
|
|
{if(D[i]==l)D[ i ]=-1; l=D[i];}qsort(D ,n ,sizeof(
|
|
int64_t),Q);for(i=n;i>0;i--){if(D[i ]==-1)n=i;}if(
|
|
!t)t=n;}printf("%lu dots left " "after first fol"
|
|
"d instruction\n",t);for( i=0;i<n;i++){U;x++
|
|
;y++;X=x>X ?x:X;Y=y>Y ?y:Y;}char O[X*Y];
|
|
memset(O,' ',X*Y );for(i=0;i<n;i++){U;O
|
|
[y*X+x]='|'; }free(D);for(i=0;i<Y;i++
|
|
)printf( "%.*s\n" ,(int)X,O+i*X);}
|