Cod sursa(job #80472)

Utilizator MarcvsHdrMihai Leonte MarcvsHdr Data 28 august 2007 01:08:56
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
# 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;
}