cses

cses solutions in pure c
git clone git://git.superpozycja.net/cses
log | files | refs

s.c (704B)


      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <string.h>
      4 #include <stdint.h>
      5 
      6 int solve()
      7 {
      8 	uint16_t labels[3] = {1,3,2};
      9 	uint32_t n;
     10 	uint32_t i;
     11 	char *buf;
     12 	char *p;
     13 
     14 	scanf("%d", &n);
     15 
     16 	buf = malloc(sizeof(char) * 262146);
     17 	p = buf;
     18 
     19 	if (n % 2) {
     20 		labels[1] ^= labels[2];
     21 		labels[2] ^= labels[1];
     22 		labels[1] ^= labels[2];
     23 	}
     24 
     25 	labels[0] += '0';
     26 	labels[1] += '0';
     27 	labels[2] += '0';
     28 
     29 	p += sprintf(p, "%d\n", (1 << n) - 1);
     30 	memset_pattern4(p, "x x\n", 262146 - (p - buf));
     31 
     32 	for (i = 1; i < 1 << n; i++) {
     33 		*p = labels[((i & i - 1) % 3)];
     34 		p+=2;
     35 		*p = labels[(((i | i - 1) + 1) % 3)];
     36 		p+=2;
     37 	}
     38 
     39 	*p = '\0';
     40 
     41 	puts(buf);
     42 
     43 	return 0;
     44 }
     45 
     46 int main()
     47 {
     48 	int t = 1;
     49 	while (t--)
     50 		solve();
     51 }