Pagini recente » Cod sursa (job #2523135) | Cod sursa (job #823574) | Cod sursa (job #1382774) | Cod sursa (job #1379647) | Cod sursa (job #660182)
Cod sursa(job #660182)
#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
{
int tip;
int cantitate;
};
int NumarBancnote = 0;
int C = 0;
int sumaNecesara = 0;
f>>NumarBancnote>>C>>sumaNecesara;
bancnote *bancnoteDisponibile = new bancnote[NumarBancnote];
memset(bancnoteDisponibile, 0, NumarBancnote * sizeof(bancnote));
int *bancnoteFolosite = new int[NumarBancnote];
memset(bancnoteFolosite , 0 , sizeof(int));
int *bancnoteDisponibile2 = new int[NumarBancnote];
memset(bancnoteDisponibile2 , 0, sizeof(int));
for (int i = 0; i < NumarBancnote; ++i)
{
f>>bancnoteDisponibile[i].tip;
bancnoteDisponibile[i].tip = C ^ bancnoteDisponibile[i].tip;
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)
{
int 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;
}
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;
}