Pagini recente » Cod sursa (job #182369) | Cod sursa (job #997620) | Cod sursa (job #2906740) | Cod sursa (job #1523278) | Cod sursa (job #774871)
Cod sursa(job #774871)
#include<stdio.h>
#include<algorithm>
using namespace std;
#define MAXN 32
typedef struct{ long long int val; int nr, u, pos; } coin;
coin v[ MAXN ];
int n, i, p, u[ MAXN ], C, j;
long long int L, x, s, res;
inline int cmp1(coin x, coin y)
{
if(x.val < y.val)
return 1;
return 0;
}
inline int cmp2(coin x, coin y)
{
if(x. pos < y.pos)
return 1;
return 0;
}
int main()
{
FILE *f = fopen("shop.in", "r");
fscanf(f, "%d %d %lld", &n, &C, &L);
for(i = 0; i < n; ++i)
{
fscanf(f, "%d %d", &p, &v[i].nr);
x = 1;
for(j = 0; j < p; ++j)
x *= C;
v[i].val = x, v[i].pos = i;
}
fclose(f);
sort(v, v + n, cmp1);
i = n - 1;
while(L && i >= 0)
{
s = 0;
while(s + v[i].val <= L && v[i].nr)
s += v[i].val, --v[i].nr, ++v[i].u, ++res;
L -= s, --i;
}
sort(v, v + n, cmp2);
FILE *g = fopen("shop.out", "w");
fprintf(g, "%lld\n", res);
for(i = 0; i < n; ++i)
fprintf(g, "%d ", v[i].u);
fprintf(g, "\n");
fclose(g);
return 0;
}