Pagini recente » Cod sursa (job #1125562) | Cod sursa (job #1821018) | Cod sursa (job #2524838) | Cod sursa (job #1953993) | Cod sursa (job #1066337)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("shop.in");
ofstream g("shop.out");
long long N,C,L;
struct Coin{
long long val;
long long apar;
long long position;
} Array[35];
int ind;
long long Result;
long long Sol[35];
inline bool compare(Coin a,Coin b)
{
return a.val>b.val;
}
void Read()
{
int i;
f>>N>>C>>L;
for(i=1;i<=N;i++)
f>>Array[i].val>>Array[i].apar,Array[i].position=i;
sort(Array+1,Array+N+1,compare);
}
/**void Descomp()
{
long long i;
while(L>0)
{
Vcar[ind++]=L%C;
L/=C;
}
}**/
long long power(long long x,long long y)
{
long long i,p=1;
for(i=1;i<=y;i++)
p*=x;
return p;
}
void Solve()
{
int i;
for(i=1;i<=N;i++)
{
int aux=power(C,Array[i].val);
int number=0;
if(L/aux>Array[i].apar)
number=Array[i].apar;
else
number=L/aux;
Result+=number;
Sol[Array[i].position]=number;
L-=number*aux;
}
}
void Print()
{
g<<Result<<"\n";
for(int i=1;i<=N;i++)
g<<Sol[i]<<" ";
g<<"\n";
}
int main()
{
Read();
Solve();
Print();
return 0;
}