Saturday, January 21, 2012

Minimize The Number Of Coins Or Bills That You Payout Such bill = 1400 payment(minimize)=1500 max coin(repeted) = 2 UVA-11517

#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;


int i,n,maxcoin,coin[10009],no_coin,temp,test,money,maxcoin1,Count;
int main()
{


scanf("%d",&test);
while(test--)
{
scanf("%d%d",&money,&no_coin);
for(i=0;i<no_coin;i++)
{
scanf("%d",&coin[i]);
}
sort(coin,coin+no_coin);
for(i=0;i<no_coin;i++)
{
if(coin[i]>money)
{temp = i;break;}
}
if(temp==0)temp=no_coin;
Count=0;
maxcoin = 0;
for(i=temp-1;i>=0;i--)
{
while(money-maxcoin>=coin[i])
{
maxcoin+=coin[i];
Count++;
//printf("Cou = %d %d\n",Count,maxcoin);
}
}
if(maxcoin<money){maxcoin+=coin[0];Count++;}
printf("%d %d\n",maxcoin,Count);
}
return 0;
}


/*
input:
2
1400
3
500
1000
2000


1400
5
650
200
300
450
120
output:
1500 2
1400 7
*/

No comments:

Post a Comment