Pagini recente » Cod sursa (job #585853) | Cod sursa (job #2838931) | Cod sursa (job #2015674) | Cod sursa (job #570747) | Cod sursa (job #1570253)
#include <cstdio>
#define MAXA 32
long long p[MAXA+1];
int A[MAXA],B[MAXA],poz[MAXA],v[MAXA];
inline void swap(int b,int e,int *x){
int aux=x[b];
x[b]=x[e];
x[e]=aux;
}
void myqsort(int begin,int end){
int b=begin,e=end,pivot=A[(b+e)/2];
while(b<=e){
while(A[b]<pivot) b++;
while(A[e]>pivot) e--;
if(b<=e){
swap(b,e,A);
swap(b,e,B);
swap(b,e,poz);
b++;e--;
}
}
if(begin<e) myqsort(begin,e);
if(b<end) myqsort(b,end);
}
int main(){
FILE*fi,*fout;
int i,n,con;
long long c,l;
fi=fopen("shop.in" ,"r");
fout=fopen("shop.out" ,"w");
fscanf(fi,"%d%lld%lld" ,&n,&c,&l);
p[0]=1;
for(i=1;i<=MAXA;i++)
p[i]=p[i-1]*c;
for(i=0;i<n;i++){
fscanf(fi,"%d%d" ,&A[i],&B[i]);
poz[i]=i;
}
myqsort(0,n-1);
i=n-1;
int con1=0;
while(l>0){
con=0;
while(B[i]>0&&l>=p[A[i]]){
l-=p[A[i]];
B[i]--;
con++;
}
v[poz[i]]=con;
con1+=con;
i--;
}
fprintf(fout,"%d\n" ,con1);
for(i=0;i<n;i++)
fprintf(fout,"%d " ,v[i]);
fclose(fi);
fclose(fout);
return 0;
}