Pagini recente » Cod sursa (job #924466) | Cod sursa (job #2010389) | Cod sursa (job #2029441) | Cod sursa (job #1864937) | Cod sursa (job #1749942)
#include <stdio.h>
#include <algorithm>
using namespace std;
struct elem{int exp,ind,cate,nr;};
elem v[45];
bool cmp(elem a,elem b){
if(a.exp>b.exp)
return true;
else
return false;
}
bool ord(elem a,elem b){
if(a.ind<b.ind)
return true;
else
return false;
}
long long put(long long baza,long long exp){
long long rasp=1;
while(exp>0){
if(exp%2==1){
rasp=rasp*baza;
exp--;
}
else{
baza*=baza;
exp/=2;
}
}
return rasp;
}
int main(){
FILE *fin,*fout;
fin=fopen("shop.in","r");
fout=fopen("shop.out","w");
long long i,n,baza,exp,plata,val,rasp=0;
fscanf(fin,"%lld%lld%d",&n,&baza,&plata);
for(i=1;i<=n;i++){
fscanf(fin,"%d%d",&v[i].exp,&v[i].cate);
v[i].ind=i;
}
sort(v+1,v+n+1,cmp);
for(i=1;i<=n;i++){
val=put(baza,v[i].exp);
if(v[i].cate<plata/val)
v[i].nr=v[i].cate;
else
v[i].nr=plata/val;
plata=plata-v[i].nr*val;
rasp=rasp+(long long)v[i].nr;
}
sort(v+1,v+n+1,ord);
fprintf(fout,"%lld\n",rasp);
for(i=1;i<=n;i++)
fprintf(fout,"%d ",v[i].nr);
fclose(fin);
fclose(fout);
return 0;
}