Pagini recente » Cod sursa (job #3318145) | Cod sursa (job #3339872) | Cod sursa (job #3352852) | Cod sursa (job #3311989) | Cod sursa (job #3348358)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream cin("shop.in");
ofstream cout("shop.out");
int n, c, sol[35], MIN=0;
long long int l;
struct poz
{
int p, t, ind;
};
vector<poz>v(35);
bool cmp(poz a, poz b)
{
return a.p>b.p;
}
long long fastpow(long long b, long long p)
{
long long ans=1;
while(p)
{
if(p%2==1)
ans=ans*b;
b=b*b;
p=p/2;
}
return ans;
}
int main()
{
cin>>n>>c>>l;
for(int i=1;i<=n;i++)
{
cin>>v[i].p>>v[i].t;
v[i].ind=i;
}
sort(v.begin()+1, v.begin()+n+1, cmp);
for(int i=1;i<=n;i++)
{
long long power=fastpow(c, v[i].p);
long long times=l/power;
if(times>=v[i].t)
{
sol[v[i].ind]=v[i].t;
MIN+=v[i].t;
l-=1LL*power*v[i].t;
}else if(times!=0)
{
sol[v[i].ind]=times;
MIN+=times;
l-=1LL*power*times;
}
if(l==0)
break;
}
cout<<MIN<<'\n';
for(int i=1;i<=n;i++)
cout<<sol[i]<<' ';
return 0;
}