Pagini recente » Cod sursa (job #1015615) | Cod sursa (job #123170) | Cod sursa (job #1802369) | Cod sursa (job #939441) | Cod sursa (job #1668540)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
struct moneda
{
int nr,pos;
unsigned long long val;
} v[32];
int n,c,sum,ansa;
unsigned long long expo(int baza, int exp)
{
if(exp==0)
return 1;
else
{
unsigned long long tmp=expo(baza,exp/2);
if(exp%2)
return tmp*tmp*baza;
else
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(int i=1;i<=n;i++)
{
int x;
f>>x>>v[i].nr;
v[i].val=expo(c,x);
v[i].pos=i;
}
sort(v+1,v+n+1,cmp1);
for(int i=1;i<=n;i++)
{
int t=v[i].nr;
while(v[i].val<=sum && t)
{
sum-=v[i].val;
t--;
ansa++;
}
v[i].nr-=t;
}
sort(v+1,v+n+1,cmp2);
g<<ansa<<'\n';
for(int i=1;i<=n;i++)
g<<v[i].nr<<" ";
g<<'\n';
f.close();
g.close();
return 0;
}