Pagini recente » Cod sursa (job #2702069) | Cod sursa (job #2325050) | Cod sursa (job #2056128) | Cod sursa (job #703780) | Cod sursa (job #199982)
Cod sursa(job #199982)
#include <stdio.h>
#define ll long long
#define min(x,y) x<y ? x:y
int n,c,w[31],sol=0;
ll l;
struct ab{
int n,f;
};
ab v[31];
ll pow(ll x, int y){
if(y==0) return 1;
if(y%2) return x*pow(x*x,y/2);
else return pow(x*x,y/2);
}
void citeste(){
freopen("shop.in","r",stdin);
freopen("shop.out","w",stdout);
scanf("%d%d%lld",&n,&c,&l);
for(int i=1;i<=n;i++)
scanf("%d%d",&v[i].n,&v[i].f);
}
void solve(){
int poz;
ll x,y;
while(l){
poz=0;
for(int i=1;i<=n;i++)
if(v[poz].n<=v[i].n && v[i].f)
poz=i;
y=pow((ll)c,v[poz].n);x=min(l/y,v[poz].f);
l-=x*y;
sol+=x;
w[poz]=x;
v[poz].f=0;
}
printf("%d\n",sol);
for(int i=1;i<=n;i++)
printf("%d ",w[i]);
}
int main(){
citeste();
solve();
return 0;
}