Pagini recente » Cod sursa (job #575867) | Cod sursa (job #316669) | Cod sursa (job #2607213) | Cod sursa (job #1959132) | Cod sursa (job #330296)
Cod sursa(job #330296)
#include<stdio.h>
#include<algorithm>
using namespace std;
int n,c,l,i,j,k,rez[40],nr;
struct nod
{
int a,b,fol,i;
}r[40];
int p(int x)
{ return x*x;
}
int put( int y)
{
if(y==1) return c;
else if(y%2) return p(put((y-1)/2))*c;
else if(y%2==0) return p(put(y/2));
}
bool comp(nod x,nod y)
{
return x.a>y.a;
}
int main()
{
freopen("shop.in","r",stdin);
freopen("shop.out","w",stdout);
scanf("%d %d %d",&n,&c,&l);
for(i=1;i<=n;i++) {
scanf("%d %d",&r[i].a,&r[i].b);
if(r[i].a>0) r[i].a=put(r[i].a);
else r[i].a=1;
r[i].i=i;
}
sort(r+1,r+n+1,comp);
for(i=1;i<=n;i++) if(l) { k=l/r[i].a;
if(k<r[i].b) r[i].fol=k;
else r[i].fol=r[i].b;
l-=(r[i].a*r[i].fol);
}
for(i=1;i<=n;i++) { rez[r[i].i]=r[i].fol;
nr+=r[i].fol;
}
printf("%d\n",nr);
for(i=1;i<=n;i++) printf("%d ",rez[i]);
printf("\n");
fclose(stdin);
fclose(stdout);
return 0;
}