Pagini recente » Cod sursa (job #2589643) | Cod sursa (job #620809) | Cod sursa (job #1994866) | Cod sursa (job #2370874) | Cod sursa (job #40008)
Cod sursa(job #40008)
#include <stdio.h>
#include <stdlib.h>
#define NMAX 32
FILE *f = fopen("shop.in","rt"), *g = fopen("shop.out","wt");
long long a[NMAX][2],i,j,k,n,L,nr[NMAX],p,ord[NMAX];
long long x,y,ok,t;
void citire()
{
fscanf(f,"%lld %lld %lld",&n,&k,&L);
t=1;
for (i=1;i<=n;i++)
{
fscanf(f,"%lld %lld",&x,&y);
p=1;
ok=1;
for (j=1;j<=x;j++)
p*=k;
a[i][0]=p;
a[i][1]=y;
}
}
int cmp(const void *X, const void *Y)
{
if (a[ * (long long *) X ][0] > a[ * (long long *) Y ][0]) return 1;
return -1;
}
long long MINN(long long a, long long b)
{
if (a>b) return b;
return a;
}
void solve()
{
long long s;
for (i=1;i<=n;i++)
ord[i]=i;
qsort(ord,n+1,sizeof(long long),cmp);
s=0;
for (i=n;i>=1&&L;i--)
{nr[ord[i]]=MINN(L/a[ord[i]][0],a[ord[i]][1]);
L=L-a[ord[i]][0]*nr[ord[i]];
s+=nr[i];
}
fprintf(g,"%lld\n",s);
for (i=1;i<=n;i++)
fprintf(g,"%lld ",nr[i]);
}
int main()
{
citire();
solve();
fclose(f);
fclose(g);
return 0;
}