cses

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

s.c (674B)


      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <string.h>
      4 #include <stdint.h>
      5 
      6 int comp (const void *a, const void *b)
      7 {
      8 	return (*(uint32_t *)b - *(uint32_t *)a);
      9 }
     10 
     11 int solve()
     12 {
     13 	uint64_t a = 0, b = 0, res, diff;
     14 	uint32_t *p;
     15 	int n, i, j, m;
     16 
     17 	scanf("%d", &n);
     18 
     19 	p = malloc(sizeof(uint32_t) * n);
     20 
     21 	for (i = 0; i < n; i++) {
     22 		scanf("%d", p + i);
     23 		a += p[i];
     24 	}
     25 
     26 	res = a;
     27 
     28 	for (i = 0; i < 1 << n; i++) {
     29 		b = a;
     30 		m = i;
     31 		j = 0;
     32 
     33 		while (m) {
     34 			b -= p[j++] * (m & 1);
     35 			m >>= 1;
     36 		}
     37 
     38 		diff = (a - b > b ? a - b - b : b - (a - b));
     39 		res = res < diff ? res : diff;
     40 
     41 	}
     42 
     43 	printf("%llu\n", res);
     44 
     45 	return 0;
     46 }
     47 
     48 int main()
     49 {
     50 	int t = 1;
     51 	while (t--)
     52 		solve();
     53 }