Pagini recente » Cod sursa (job #522394) | Cod sursa (job #729658) | Cod sursa (job #2589082) | Cod sursa (job #445118) | Cod sursa (job #44057)
Cod sursa(job #44057)
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int n, c, w[35], i, j, nrm, min[35];
long long l, s, wer, p, tot;
struct ches{
int a, b;
};
ches v[100];
int comp(const void*x, const void*y){
ches xx=*(ches*)x, yy=*(ches*)y;
if (xx.a<yy.a) return 1;
if (xx.a>yy.a) return -1;
return 0;
}
int main(){
freopen("shop.in","r",stdin);
freopen("shop.out","w",stdout);
scanf("%d%d%lld",&n,&c,&l);
for (i=0;i<n;i++){
scanf("%d%d",&v[i].a,&v[i].b);
w[i]=v[i].a;
}
qsort(v,n,sizeof(v[0]),comp);
s=l;
i=0;
while (s>0){
wer=s/pow(c,v[i].a);
if (wer<v[i].b) nrm=wer;
else nrm=v[i].b;
p=nrm*pow(c,v[i].a);
if (s-p>=0) { s-=p; min[i]=nrm; tot+=nrm;}
i++;
}
printf("%d\n",tot);
for (i=0;i<n;i++){
s=0;
for (j=0;j<n&&s==0;j++)
if (w[i]==v[j].a) { printf("%d ",min[j]); s=1;}
}
printf("\n");
return 0;
}