Pagini recente » Cod sursa (job #2905027) | Cod sursa (job #2246551) | Cod sursa (job #2728679) | Cod sursa (job #311811) | Cod sursa (job #1424038)
#include <stdio.h>
#define MAXN 30
#define MAXA 32
int fr[MAXA+1], p[MAXA+1], v[MAXN];
int main(){
int n, c, a, x, i, rez, pas;
long long ans, d, l;
FILE *fin, *fout;
fin=fopen("shop.in", "r");
fout=fopen("shop.out", "w");
fscanf(fin, "%d%d%lld", &n, &c, &l);
for(i=0; i<n; i++){
fscanf(fin, "%d%d", &a, &x);
fr[a]=x;
p[a]=i;
}
a=0;
d=1;
while(d*c<=l){
a++;
d*=c;
}
ans=0;
while(l>0){
rez=0;
for(pas=1<<29; pas!=0; pas>>=1){
if((rez+pas<=fr[a])&&(rez+pas<=l/d)){
rez+=pas;
}
}
v[p[a]]=rez;
l-=d*rez;
ans+=rez;
a--;
d/=c;
}
fprintf(fout, "%lld\n", ans);
for(i=0; i<n-1; i++){
fprintf(fout, "%d ", v[i]);
}
fprintf(fout, "%d\n", v[n-1]);
fclose(fin);
fclose(fout);
return 0;
}