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;
}
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