Sunday, January 19, 2014

codechef MAXDIFF - "maximum weight difference" solution

codechef MAXDIFF - "maximum weight difference": http://www.codechef.com/problems/MAXDIFF

codechef MAXDIFF - "maximum weight difference" solution: http://ideone.com/n63XxB

#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;

int cmp(const void *a, const void *b) {
return (*(int*)a - *(int*)b);}

int main() {
int t, n, k, w[105], tot, cnt1, cnt2;
scanf("%d", &t);
while(t--) {
scanf("%d %d", &n, &k);
cnt1=cnt2=tot=0;
for(int i=0; i<n; i++) {
scanf("%d", &w[i]);
tot += w[i];
}
qsort(w, n, sizeof(int), cmp);
for(int i=0; i<k; i++) cnt1 += w[i];
for(int i=n-1; i>n-k-1; i--) cnt2 += w[i];
cnt1=abs(cnt1);
cnt2=abs(cnt2);
//cout<<tot<<endl;
if(abs(cnt1-(tot-cnt1))>abs(cnt2-(tot-cnt2))) printf("%d\n", abs(cnt1-(tot-cnt1)));
else (printf("%d\n", abs(cnt2-(tot-cnt2))));
}
return 0;
}

No comments:

Post a Comment