Pagini recente » Cod sursa (job #3148533) | Cod sursa (job #2770526) | Cod sursa (job #2951686) | Cod sursa (job #2352122) | Cod sursa (job #45855)
Cod sursa(job #45855)
#include <stdio.h>
#define fin "shop.in"
#define fout "shop.out"
#define DMAX 33
long long L,pow[DMAX];
int C,T,N,s[DMAX],b[DMAX],ord[DMAX];
void readData()
{
int x,v;
FILE * f = fopen(fin,"r");
fscanf(f,"%d %d %Ld",&N,&C,&L);
for(int i = 0 ; i<N ; ++i)
{
fscanf(f,"%d %d",&x,&v);
b[x] = v;
ord[i] = x;
}
fclose(f);
}
void exp()
{
int i;
pow[0] = 1;
for(i=1;pow[i-1]*C<=L & i<DMAX;++i)
pow[i] = pow[i-1] * C;
T = i - 1;
}
inline long long min(long long x,long long y)
{
return x<y?x:y;
}
void solve()
{
int minn;
long long r = 0;
FILE * f = fopen(fout,"w");
for(int i = T , minn ; i>=0; --i)
if(b[i])
{
L-=pow[i]*(minn = min(L/pow[i],b[i]));
r += s[i] = minn;
}
fprintf(f,"%Ld\n",r);
for(int i = 0 ; i < N ; ++i)
fprintf(f,"%d ",s[ord[i]]);
fclose(f);
}
int main()
{
readData();
exp();
solve();
return 0;
}