Pagini recente » Cod sursa (job #601899) | Cod sursa (job #1089592) | Cod sursa (job #2507258) | Cod sursa (job #2911785) | Cod sursa (job #1517948)
#include <cstdio>
#include <algorithm>
using namespace std;
#define long long int
#define lld d
int v[100];
int b[100];
int tt[100];
int sol[10000];
int put( int a, int bb ){
int p = 1;
while( bb > 0 ){
if( bb % 2 == 1 ){
p *= a;
bb--;
}
a *= a;
bb /= 2;
}
return p;
}
int main()
{
freopen("shop.in","r",stdin);
freopen("shop.out","w",stdout);
int n, i, j, s, t, d, k, l, ma;
scanf("%d%d%d",&n,&k,&s);
for( i = 1; i <= n; ++i ){
scanf("%d%d",&v[i],&b[i]);
tt[i] = i;
}
for( i = 1; i < n; ++i ){
for( j = i + 1; j <= n; ++j )
if( v[i] > v[j] ){
swap(v[i],v[j]);
swap(b[i],b[j]);
swap(tt[i],tt[j]);
}
}
l = 0;
while( s > 0 ){
for( i = n; i >= 1; --i ){
d = put(k,v[i]);
if( d <= s && b[i] ){
s -= d;
b[i]--;
sol[tt[i]]++;
l++;
i = - (1<<23);
}
}
}
printf("%d\n",l);
for( i = 1; i <= 1000; ++i ){
if( sol[i] > 0 ) printf("%d ",sol[i]);
}
return 0;
}