Pagini recente » Cod sursa (job #3031032) | Cod sursa (job #1259587) | Cod sursa (job #809858) | Cod sursa (job #327009) | Cod sursa (job #1745491)
#include <bits/stdc++.h>
#define NMax 31
#define ll long long
using namespace std;
struct caract{
ll a,b,in;
};
ifstream f("shop.in");
ofstream g("shop.out");
caract v[NMax];
ll n,c,l,ANS;
ll ans[NMax],inv[NMax];
bool cmp(caract x, caract y){
return(x.a < y.a);
}
ll pow(ll x,ll p){
ll ans = 1;
while(p>0){
if(p % 2 == 1){
ans = ans * x;
--p;
}
p/=2;
x*=x;
}
return ans;
}
int main()
{
f >> n >> c >> l;
for(ll i = 1; i <= n; ++i){
f >> v[i].a >> v[i].b;
v[i].in = i;
}
sort(v + 1, v + 1 + n,cmp);
for(ll i = 1; i <= n; ++i){
inv[v[i].in] = i;
}
for(ll i = n; i >= 1 && l != 0; --i){
ll w = pow(c,v[i].a);
ll mx = l / w;
if(mx > v[i].b){
l -= (v[i].b * w);
ans[i] = v[i].b;
ANS += v[i].b;
}else{
l -= (mx * w);
ans[i] = mx;
ANS += mx;
}
}
g << ANS << '\n';
for(ll i = 1; i <= n; ++i){
g << ans[inv[i]] << ' ';
}
return 0;
}