Pagini recente » Cod sursa (job #1950775) | Cod sursa (job #2133311) | Cod sursa (job #1970446) | Cod sursa (job #1375177) | Cod sursa (job #1142404)
#include <cstdio>
#include <algorithm>
using namespace std;
struct shop
{
int a,b,x,y;
} v[31];
bool comp1(shop u,shop j)
{
return u.a<j.a;
};
bool comp2(shop u,shop j)
{
return u.x<j.x;
}
long long putere(int u,int x)
{
long long result=1;
long long p=x;
long long n=u;
while(p)
{
if(p&1) result=result*n;
p>>=1;
n=n*n;
}
return result;
}
int main()
{
freopen("shop.in","r",stdin);
freopen("shop.out","w",stdout);
int n,i,j,sol=0,put;
long long c,d;
scanf("%d%d%I64d",&n,&put,&c);
for(i=0;i<n;i++)
{
scanf("%d%d",&v[i].a,&v[i].b);
v[i].x=i;
}
sort(v,v+n,comp1);
for(i=n-1;i>=0;i--)
{ d=putere(put,v[i].a);
if(d==c)
{
sol++;
v[i].y=1;
break;
}
else if(d<c)
{
for(j=1;j<v[i].b&&d<=c;j++) d+=putere(put,v[i].a);
if(d>c||j>v[i].b) d-=putere(put,v[i].a),j--;
sol+=j;
v[i].y=j;
c-=d;
}
if(c==0) break;
}
sort(v,v+n,comp2);
printf("%d\n",sol);
for(i=0;i<n;i++) printf("%d ",v[i].y);
}