Pagini recente » Cod sursa (job #1781631) | Cod sursa (job #1159675) | Cod sursa (job #1041122) | Cod sursa (job #3254590) | Cod sursa (job #2432003)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
using namespace std;
ifstream fin("shop.in");
ofstream fout("shop.out");
int N,C,L,nrm = 0;
struct mond
{
long long val,nr;
int used = 0;
int first;
};
mond v[35];
void Read()
{
int x;
fin>>N>>C>>L;
for(int i = 1;i<=N;i++)
{
fin>>x>>v[i].nr;
v[i].val = pow(C,x);
v[i].first = i;
}
}
bool CMP(mond a,mond b)
{
return a.val > b.val;
}
bool CMP1(mond a,mond b)
{
return a.first < b.first;
}
void Sorting()
{
sort(v+1,v+N+1,CMP);
}
void Sorting1()
{
sort(v+1,v+N+1,CMP1);
}
void Print()
{
fout<<nrm<<"\n";
for(int i =1 ;i<=N;i++)
fout<<v[i].used<<" ";
}
void Solve()
{
for(int i =1;i<=N;i++)
{
v[i].used = min(L/v[i].val,v[i].nr);
nrm=nrm+v[i].used;
L=L-v[i].used*v[i].val;
}
}
int main()
{
Read();
Sorting();
Solve();
Sorting1();
Print();
return 0;
}