Pagini recente » Cod sursa (job #2901227) | Cod sursa (job #333573) | Cod sursa (job #115493) | Cod sursa (job #381062) | Cod sursa (job #1368652)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("shop.in");
ofstream g("shop.out");
struct portofel{
int tip,val,nr;
};
uint64_t n,b,s,nr_total_monezi;
portofel v[31];
int sol[31];
bool cmp(portofel a,portofel b)
{
return a.val>b.val;
}
uint64_t put(uint64_t a,uint64_t k)
{
uint64_t aux=a,sol=1;
if(k)
{
while(k)
{
if(k%2) sol*=aux;
aux*=aux;
k/=2;
}
return sol;
}
else
return 1;
}
void solve()
{
uint64_t valoare;
int nr_monezi,tipul;
int i=1;
while(s)
{
valoare = put(b,v[i].val);
nr_monezi= s/valoare;
tipul=v[i].tip;
sol[tipul]=min(nr_monezi,v[i].nr);
s-=sol[tipul]*valoare;
nr_total_monezi+=sol[tipul];
i++;
}
}
void afisare()
{
g<<nr_total_monezi<<'\n';
int i;
for(i=1;i<=n;i++)
g<<sol[i]<<" ";
}
int main()
{
f>>n>>b>>s;
for(int i=1;i<=n;i++)
{
f>>v[i].val>>v[i].nr;
v[i].tip=i;
}
sort(v+1,v+n+1,cmp);
solve();
afisare();
return 0;
}