Pagini recente » Cod sursa (job #9226) | Cod sursa (job #385690) | Cod sursa (job #2132993) | Cod sursa (job #1503705) | Cod sursa (job #962701)
Cod sursa(job #962701)
#include<stdio.h>
#define maxpow 35
FILE*f=fopen("shop.in","r");
FILE*g=fopen("shop.out","w");
int n,c;
int m[maxpow],sol[maxpow],tip[maxpow];
long long L;
inline long long lgpow ( int a , int b ){
long long s = 1,p = a;
while ( b ){
if ( b & 1 ){
s = s*p;
}
p = p*p;
b >>= 1;
}
return s;
}
int main () {
fscanf(f,"%d %d %lld",&n,&c,&L);
int a,b;
for ( int i = 1 ; i <= n ; ++i ){
fscanf(f,"%d %d",&a,&b);
m[a] += b;
tip[i] = a;
}
int total = 0;
for ( int i = maxpow-1 ; i >= 0 ; --i ){
if ( !m[i] ) continue ;
long long value = lgpow(c,i);
for ( int j = 1 ; j <= m[i] ; ++j ){
if ( L >= value ){
L -= value;
++sol[i]; ++total;
}
else{
break ;
}
}
}
fprintf(g,"%d\n",total);
for ( int i = 1 ; i <= n ; ++i ){
fprintf(g,"%d ",sol[tip[i]]);
}
fprintf(g,"\n");
fclose(f);
fclose(g);
return 0;
}