Pagini recente » Cod sursa (job #2655464) | Cod sursa (job #2890166) | Cod sursa (job #2488084) | Cod sursa (job #421944) | Cod sursa (job #63150)
Cod sursa(job #63150)
#include <cstdio>
using namespace std;
long long put[33];
int a[33], b[33];
int use[33];
int val[33];
int main()
{
freopen("shop.in","r",stdin);
freopen("shop.out","w",stdout);
int n,i,j, nrmin = 0, aux;
long long c,L;
scanf("%d%lld%lld",&n,&c,&L);
put[0] = 1;
for(i=1;put[i]<L;++i)
put[i] = put[i-1] * c;
for(i=1;i<=n;++i)
{
scanf("%d%d",&a[i],&b[i]);
// printf("%d %d\n",a[i],b[i]);
val[a[i]] = i;
}
for(i=1;i<n;++i)
for(j=i+1;j<=n;++j)
if(a[i] < a[j])
{
aux = a[i];
a[i] = a[j];
a[j] = aux;
aux = b[i];
b[i] = b[j];
b[j] = aux;
}
/*
for(i=1;i<=n;++i)
printf("%d ",a[i]);
printf("\n");
*/
for(i=1;i<=n;++i)
{
j = 0;
while((j <= b[i]) && (L - put[a[i]]*j >= 0))
++j;
--j;
use[val[a[i]]] = j;
L -= put[a[i]]*j;
nrmin += j;
// printf("+ %lld\n",put[a[i]]*j);
}
printf("%d\n",nrmin);
for(i=1;i<=n;++i)
printf("%d ",use[i]);
printf("\n");
return 0;
}