Pagini recente » Cod sursa (job #2520588) | Cod sursa (job #1387581) | Cod sursa (job #2678351) | Cod sursa (job #659994) | Cod sursa (job #660227)
Cod sursa(job #660227)
#include <iostream>
#include <fstream>
#include <string.h>
//#include <math.h>
//#include <conio.h>
using namespace std;
int main()
{
ifstream f("shop.in");
ofstream g("shop.out");
struct bancnote
{
unsigned int tip;
int cantitate;
};
int NumarBancnote = 0;
int C = 0;
long long sumaNecesara = 0;
f>>NumarBancnote>>C>>sumaNecesara;
bancnote /**/bancnoteDisponibile/* = new bancnote*/[31];
memset(bancnoteDisponibile, 0, 31 * sizeof(bancnote));
int /**/bancnoteFolosite /*= new int*/[31];
memset(bancnoteFolosite , 0 , sizeof(int) * 31);
int /**/bancnoteDisponibile2 /*= new int*/[31];
memset(bancnoteDisponibile2 , 0, sizeof(int) * 31);
for (int i = 0; i < NumarBancnote; ++i)
{
int power = 0;
f>>power;
bancnoteDisponibile[i].tip = 1;
for (int j = 0; j < power; ++j)
bancnoteDisponibile[i].tip *= C;
f>>bancnoteDisponibile[i].cantitate;
bancnoteDisponibile2[i] = bancnoteDisponibile[i].tip;
}
for(int i = 0; i < NumarBancnote; ++i)
{
int aux = 0;
for(int j = 0; j <= i; ++j)
if(bancnoteDisponibile[j].tip < bancnoteDisponibile[i].tip)
{
aux = bancnoteDisponibile[i].tip;
bancnoteDisponibile[i].tip = bancnoteDisponibile[j].tip;
bancnoteDisponibile[j].tip = aux;
aux = bancnoteDisponibile[i].cantitate;
bancnoteDisponibile[i].cantitate = bancnoteDisponibile[j].cantitate;
bancnoteDisponibile[j].cantitate = aux;
}
}
int i = 0;
int bancnoteFolositeTotal = 0;
while(sumaNecesara > 0)
{
long long bancnoteNecesare = sumaNecesara / bancnoteDisponibile[i].tip;
if(bancnoteNecesare > bancnoteDisponibile[i].cantitate)
{
bancnoteFolosite[i] = bancnoteDisponibile[i].cantitate;
}
else
{
bancnoteFolosite[i] = bancnoteNecesare;
}
sumaNecesara -= bancnoteFolosite[i] * bancnoteDisponibile[i].tip;
bancnoteFolositeTotal += bancnoteFolosite[i];
++i;
if(i == NumarBancnote)
break;
}
g<<bancnoteFolositeTotal<<endl;
for(int i = 0; i < NumarBancnote; ++i)
{
for(int j = 0; j < NumarBancnote; ++j)
{ if(bancnoteDisponibile2[i] == bancnoteDisponibile[j].tip)
{
//if(bancnoteFolosite[j] != 0)
g<<bancnoteFolosite[j]<<" ";
break;
}
}
}
/*delete []bancnoteDisponibile2;
delete []bancnoteDisponibile;
delete []bancnoteFolosite;*/
return 0;
}