Pagini recente » Cod sursa (job #2651697) | Cod sursa (job #2909361) | Cod sursa (job #419406) | Cod sursa (job #2341408) | Cod sursa (job #213341)
Cod sursa(job #213341)
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
struct ms {
long long x, y, poz;
};
ms a[30];
long long n, c, l, i, aux, nmz, y[64];
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;
}
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 = 1 << aux;
a[i].poz = i;
}
qsort(a + 1, n, sizeof(a[0]), cmp);
aux = n;
while (l != 0) {
y[a[aux].poz] = min((l / a[aux].x), a[aux].y);
nmz += y[a[aux].poz];
l -= y[a[aux].poz] * a[aux].x;
--aux;
}
printf("%lld\n", nmz);
for (i = 1; i <= n; ++i) {
printf("%lld ", y[i]);
}
return 0;
}