Pagini recente » Cod sursa (job #3233779) | Cod sursa (job #1348782) | Cod sursa (job #2641660) | Cod sursa (job #462172) | Cod sursa (job #68886)
Cod sursa(job #68886)
#include <stdio.h>
#include <math.h>
long long a[33], b[33], ind[33], nr[33], n, C, L;
void read() {
int i;
long long p, x;
FILE *f=fopen ("shop.in", "r");
fscanf (f, "%lld %lld %lld", &n, &C, &L);
for (i=0; i<n; ++i){
fscanf (f, "%lld %lld", &p, &x);
b[p]=x; a[p]=1; ind[p]=i+1;
}
fclose(f);
}
int main() {
int found, i, j;
long long p, exp, NR=0;
read();
while (L) {
for (i=32, found=0; i>=0&&!found; --i) {
if (a[i]){
p=pow(C, i);
if (p <= L){
(L/p > b[i])?(exp=b[i]):(exp=L/p);
nr[i]+=exp; NR+=exp;
L-=(exp*p);
a[i]=0;
found=1;
}
}
}
}
FILE *g=fopen ("shop.out", "w");
fprintf (g, "%lld\n", NR);
for (i=1; i<=n; ++i)
for (j=0; j<33; ++j)
if (ind[j]==i)
fprintf (g, "%lld ", nr[j]);
fprintf (g, "\n");
fclose(g);
return 0;
}