Pagini recente » Cod sursa (job #1790999) | Cod sursa (job #1172423) | Cod sursa (job #1929102) | Cod sursa (job #1927550) | Cod sursa (job #38933)
Cod sursa(job #38933)
#include <stdio.h>
#define input "shop.in"
#define output "shop.out"
#define nmax 50
long n,c,a[nmax],i,poz,fol[nmax],lung;
long b[nmax],v[nmax];
long long p[nmax],min,cnt,l;
void citire()
{
FILE *fin;
fin=fopen(input,"r");
fscanf(fin,"%ld %ld %lld",&n,&c,&l);
for (i=1;i<=n;i++)
fscanf(fin,"%ld %ld",&a[i],&b[i]);
fclose(fin);
}
void afisare()
{
min=0;
for (i=1;i<=n;i++) min+=v[i];
FILE *fout;
fout=fopen(output,"w");
fprintf(fout,"%lld\n",min);
for (i=1;i<=n;i++)
fprintf(fout,"%ld ",v[i]);
fclose(fout);
}
void solve()
{
p[0]=1; lung=0;
while (p[lung]<=l) {lung++; p[lung]=c*p[lung-1];}
while (l)
{
poz=0;
for (i=1;i<=n;i++)
if ((!fol[i]) && (a[i]>=a[poz]) && (a[poz]<=l)) poz=i;
fol[poz]=1;
cnt=(long long)(l/p[a[poz]]);
if (cnt<=b[poz]) {v[poz]=cnt; l-=cnt*p[a[poz]];}
else {v[poz]=b[poz]; l-=b[poz]*p[a[poz]];}
}
}
int main()
{
citire();
solve();
afisare();
return 0;
}