Pagini recente » Cod sursa (job #567336) | Cod sursa (job #793265) | Cod sursa (job #2177710) | Cod sursa (job #1018680) | Cod sursa (job #80472)
Cod sursa(job #80472)
# include <stdio.h>
const long int MAXN=40;
long int min,fact,tip[MAXN+1],av[MAXN+1],need[MAXN+1],used[MAXN+1],n,c;long long int sum;
void citire()
{
long int i,aa,bb;
FILE *f=fopen("shop.in","r");
fscanf(f,"%ld%ld%lld",&n,&c,&sum);
for (i=1;i<=n;i++)
{
fscanf(f,"%ld%ld",&aa,&bb);
av[aa]+=bb;
tip[i]=aa;
}
fclose(f);
}
void convert()
{
while (sum)
{
need[fact]=sum%c;
sum/=c;
fact++;
}
fact--;
}
void scrie()
{
FILE *g=fopen("shop.out","w");
fprintf(g,"%ld\n",min);
long int i,j;
for (i=1;i<=n-1;i++)
fprintf(g,"%ld ",used[tip[i]]);
fprintf(g,"%ld\n",used[tip[n]]);
fcloseall();
}
int main()
{
citire();
convert();
long int j;
for (j=fact;j>=0;j--)
{
if (need[j]<=av[j])
{
used[j]=need[j];
min+=used[j];
}
else
{
used[j]=av[j];
need[j-1]+=(need[j]-av[j])*c;
min+=used[j];
}
}
scrie();
return 0;
}