Pagini recente » Cod sursa (job #707709) | Cod sursa (job #1895267) | Cod sursa (job #2284988) | Cod sursa (job #400154) | Cod sursa (job #1142427)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("shop.in");
ofstream fout("shop.out");
struct shop
{
unsigned long long 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;
}
unsigned long long putere(unsigned long long u,unsigned long long x)
{
unsigned long long result=1;
unsigned long long p=x;
unsigned 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);
unsigned n,i,j,sol=0,put;
unsigned long long c,d,e;
fin>>n>>put>>c;
for(i=0;i<n;i++)
{
fin>>v[i].a>>v[i].b;
v[i].x=i;
}
sort(v,v+n,comp1);
for(i=n-1;i>=0;i--)
{ e=d=putere(put,v[i].a);
if(d==c)
{
sol++;
v[i].y=1;
c=0;
break;
}
else if(d<c)
{
for(j=1;j<v[i].b&&d<=c;j++) d+=e;
if(d>c||j>v[i].b) d-=e,j--;
sol+=j;
v[i].y=j;
c-=d;
}
if(c==0) break;
}
sort(v,v+n,comp2);
fout<<sol<<"\n";
for(i=0;i<n;i++) fout<<v[i].y<<" ";
}