Pagini recente » Cod sursa (job #156085) | Cod sursa (job #542269) | Cod sursa (job #1362809) | Cod sursa (job #2444932) | Cod sursa (job #214715)
Cod sursa(job #214715)
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
struct ms {
long long x, y, poz;
};
ms a[1024];
long long n, c, l, i, aux, nmz, y[1024];
int cmp(const void *w, const void *z) {
ms c = *(ms *)w, d = *(ms *)z;
if (c.y != d.y) {
return d.y - c.y;
}
return d.x - c.x;
}
long long min(long long num1, long long num2) {
if (num1 < num2) {
return num1;
}
return num2;
}
long long put(long long num1, long long num2) {
long long p = 1;
for (long long i = 1; i <= num2; ++i) {
p *= num1;
}
return p;
}
int main() {
freopen("shop.in", "r", stdin);
freopen("shop.out", "w", stdout);
scanf("%lld %lld %lld", &n, &c, &l);
for (i = 1; i <= n; ++i) {
scanf("%lld %lld", &aux, &a[i].y);
a[i].x = put(c, aux);;
a[i].poz = i;
}
qsort(a + 1, n, sizeof(a[0]), cmp);
aux = n;
while (l != 0 && aux > 0) {
long pop = 0;
while (l - a[aux].x >= 0 && pop < a[aux].y) {
++pop;
l -= a[aux].x;
}
y[a[aux].poz] = pop;
//y[a[aux].poz] = min((l / a[aux].x), a[aux].y);
nmz += y[a[aux].poz];
--aux;
}
printf("%lld\n", nmz);
for (i = 1; i <= n; ++i) {
printf("%lld ", y[i]);
}
printf("\n");
return 0;
}