Pagini recente » Cod sursa (job #1041497) | Cod sursa (job #39769) | Cod sursa (job #862495) | Cod sursa (job #2786554) | Cod sursa (job #268064)
Cod sursa(job #268064)
#include <stdio.h>
#include <algorithm>
#define ll long long
#define DIM 35
using namespace std;
struct shop {int a,b,i,uz;} a[DIM];
int n,c,nrt;
ll l;
void read ()
{
int i;
scanf ("%d%d%lld",&n,&c,&l);
for (i=1; i<=n; ++i)
{
scanf ("%d%d",&a[i].a,&a[i].b);
a[i].i=i;
}
}
int cmp1 (shop a,shop b)
{
return a.a>b.a;
}
ll minim (ll a,ll b)
{
if (a<b)
return a;
return b;
}
ll pow (int c,int p)
{
int i;
ll rez=1;
for (i=1; i<=p; ++i)
rez*=c;
return rez;
}
void solve ()
{
ll nr;
int i;
for (i=1; i<=n && l; ++i)
{
nr=pow (c,a[i].a);
a[i].uz=minim (l/nr,a[i].b);
nrt+=a[i].uz;
l-=nr*a[i].uz;
}
}
int cmp2 (shop a,shop b)
{
return a.i<b.i;
}
void print ()
{
int i;
printf ("%d\n",nrt);
for (i=1; i<=n; ++i)
printf ("%d ",a[i].uz);
}
int main ()
{
freopen ("shop.in","r",stdin);
freopen ("shop.out","w",stdout);
read ();
sort (a+1,a+n+1,cmp1);
solve ();
sort (a+1,a+n+1,cmp2);
print ();
return 0;
}