Pagini recente » Cod sursa (job #1586018) | Cod sursa (job #2532401) | Cod sursa (job #458421) | Cod sursa (job #2399644) | Cod sursa (job #37982)
Cod sursa(job #37982)
#include<fstream.h>
#include<string.h>
#include<math.h>
ifstream f("shop.in");
ofstream g("shop.out");
int n,c,vl;
long a[40],b[40],x[40],poz[40];
unsigned long w,suma;
char l[20];
void rd()
{f>>n>>c;
f.get();
f.get(l,20);
vl=strlen(l);
for(int j=0;j<vl;j++)
w=w*10+(l[j]-48);
for(int i=1;i<=n;i++)
{f>>a[i]>>b[i];
poz[i]=i;
}
}
void sch(long &a,long &b)
{long t=a; a=b; b=t;
}
void sort()
{long ul=n,n1;
do
{n1=ul-1;
ul=0;
for(long i=1;i<=n1;i++)
if(a[i]<a[i+1])
{sch(a[i],a[i+1]);
sch(b[i],b[i+1]);
sch(poz[i],poz[i+1]);
ul=i;
}
}while(ul>0);
}
void imp(char a[],long d)
{long r=0;
for(long i=0;i<vl;i++)
{r=r*10+(a[i]-48);
a[i]=r/d+48;
r=r%d;
}
}
int umple()
{long w1=w,r,p;
for(long i=1;i<=n;i++)
{p=pow(c,a[i]);
r=w1/p;
if(r>b[i]) {x[poz[i]]=i; suma=suma+i;}
else {x[poz[i]]=r; suma+=r;}
w1=w1-p*x[poz[i]];
}
if(w1==0) return 0;
return 1;
}
void main()
{rd();
sort();
if(umple()==0)
{g<<suma<<"\n";
for(int i=1;i<=n;i++) g<<x[i]<<" ";
} }