#include <stdio.h>
#include <malloc.h>
int pick(int n, int *bucket, int dest, int lastIndex, int value, int toPick){
if(toPick == 0) return value;
int ans = 0;
for(int t = lastIndex + 1, next;t < n - toPick + 1;t++){
next = pick(n, bucket, dest, t, value + bucket[t], toPick - 1);
if ((dest - next) * (dest - next) < (dest - ans)*(dest - ans)) ans = next;
}
return ans;
}
int main(void) {
int n, *input, total = 0;
input
= malloc(sizeof(int) * n
); for(int t = 0;t<n;t++) {
total += input[t];
}
printf("%d", total
- 2*pick
(n
, input
, total
/ 2, -1, 0, n
/ 2)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYWxsb2MuaD4KaW50IHBpY2soaW50IG4sIGludCAqYnVja2V0LCBpbnQgZGVzdCwgaW50IGxhc3RJbmRleCwgaW50IHZhbHVlLCBpbnQgdG9QaWNrKXsKCWlmKHRvUGljayA9PSAwKSByZXR1cm4gdmFsdWU7CglpbnQgYW5zID0gMDsKCWZvcihpbnQgdCA9IGxhc3RJbmRleCArIDEsIG5leHQ7dCA8IG4gLSB0b1BpY2sgKyAxO3QrKyl7CgkJbmV4dCA9IHBpY2sobiwgYnVja2V0LCBkZXN0LCB0LCB2YWx1ZSArIGJ1Y2tldFt0XSwgdG9QaWNrIC0gMSk7CgkJaWYgKChkZXN0IC0gbmV4dCkgKiAoZGVzdCAtIG5leHQpIDwgKGRlc3QgLSBhbnMpKihkZXN0IC0gYW5zKSkgYW5zID0gbmV4dDsKCX0KCXJldHVybiBhbnM7Cn0KCmludCBtYWluKHZvaWQpIHsKCWludCBuLCAqaW5wdXQsIHRvdGFsID0gMDsKCXNjYW5mKCIlZCIsICZuKTsKCWlucHV0ID0gbWFsbG9jKHNpemVvZihpbnQpICogbik7Cglmb3IoaW50IHQgPSAwO3Q8bjt0KyspIHsKCQlzY2FuZigiJWQiLCAmaW5wdXRbdF0pOwoJCXRvdGFsICs9IGlucHV0W3RdOwoJfQoJcHJpbnRmKCIlZCIsIHRvdGFsIC0gMipwaWNrKG4sIGlucHV0LCB0b3RhbCAvIDIsIC0xLCAwLCBuIC8gMikpOwoJZnJlZShpbnB1dCk7CglyZXR1cm4gMDsKfQo=