Thursday, 3 August 2017

Luck Balance

Just a trivial greedy problem. Check out the link for the problem description :
https://www.hackerrank.com/challenges/luck-balance


#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*));
int cmpfunc (const void * a, const void * b)
{
   return ( *(int*)a - *(int*)b );
}

int main() {
    int a[100]={0};
    int N,K,c=0,i=0,l,t,c1,c2,sum=0;
    scanf("%d %d",&N,&K);

    while(i!=N){
        scanf("%d %d",&l,&t);
        if(t==0)
            sum+=l;
        else if(t==1){
            a[i]=l;
            c+=1;
        }
      i++;
    }

    qsort(a, 100, sizeof(int), cmpfunc);

    c1=100-c;
    c2=c-K;
    for(i=c1;i<100;i++){
        if(i<c1+c2)
        sum=sum-a[i];
       
    else if(i>=c1+c2)
        sum=sum+a[i];
    }
    printf("%d",sum);
    return 0;
}

No comments:

Post a Comment