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 }