Pagini recente » Cod sursa (job #1963336) | Cod sursa (job #1203090) | Cod sursa (job #2580046) | Cod sursa (job #694989) | Cod sursa (job #2001324)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
struct moneda
{
int nr,pos,used;
unsigned long long val;
} v[32];
int n,c,i,x;
unsigned long long sum,ansa;
unsigned long long expo(int baza, int exp)
{
if(exp==0) return 1;
unsigned long long tmp=expo(baza,exp/2);
if(exp%2) return tmp*tmp*baza;
return tmp*tmp;
}
bool cmp1(moneda x, moneda y)
{
return x.val>y.val;
}
bool cmp2(moneda x, moneda y)
{
return x.pos<y.pos;
}
int main()
{
ifstream f("shop.in");
ofstream g("shop.out");
f>>n>>c>>sum;
for(i=1;i<=n;i++)
{
f>>x>>v[i].nr;
v[i].val=expo(c,x);
v[i].pos=i;
}
sort(v+1,v+n+1,cmp1);
for(i=1;i<=n;i++)
while(v[i].val<=sum && v[i].nr)
{
sum-=v[i].val;
v[i].nr--;
v[i].used++;
ansa++;
}
sort(v+1,v+n+1,cmp2);
g<<ansa<<'\n';
for(i=1;i<=n;i++) g<<v[i].used<<" ";
g<<'\n';
f.close();
g.close();
return 0;
}