Pagini recente » Cod sursa (job #2181104) | Cod sursa (job #94006) | Cod sursa (job #966959) | Cod sursa (job #531548) | Cod sursa (job #361535)
Cod sursa(job #361535)
#include <stdio.h>
#include <algorithm>
#define Nmax 36
#define a first
#define b second
#define LL long long // ~~~~
using namespace std;
pair< int,int > v[Nmax];
int vi[Nmax],cnt[Nmax];
int n,i,c,y,p1,j;
LL L,nr,r,tot;
LL minim(LL a,LL b){
return a < b ? a:b;
}
int main(){
freopen("shop.in","r",stdin);
freopen("shop.out","w",stdout);
scanf("%d%d%lld",&n,&c,&L);
for(i=1;i<=n;++i){
scanf("%d%d",&vi[i],&y);
v[i]=make_pair(vi[i],y);
}
sort(v+1,v+n+1);
for(i=n; i>=1 && L; i-- ){
for(nr=1,j=1; j<=v[i].a && nr < L; j++) nr *= c;
if( j == v[i].a+1 ){
// r= L / nr;
cnt[v[i].a] = minim(L/nr, v[i].b);
tot += cnt[v[i].a];
L -= (LL)cnt[v[i].a] * nr; // poti sa faci pe nr mari
}
}
printf("%d\n",tot);
for(i=1;i<=n;++i)
printf("%d ",cnt[vi[i]]);
printf("\n");
fclose(stdin); fclose(stdout);
return 0;
}