Pagini recente » Cod sursa (job #1964304) | Cod sursa (job #236654) | Cod sursa (job #1904701) | Cod sursa (job #1143211) | Cod sursa (job #2431994)
#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()
{
int k=1;
while(L!=0)
{
while(v[k].nr!=0 && L>0)
{
L = L -v[k].val;
v[k].used++;
nrm++;
v[k].nr--;
}
if(L<0)
{
nrm--;
v[k].used--;
L = L + v[k].val;
}
k++;
}
}
int main()
{
Read();
Sorting();
Solve();
Sorting1();
Print();
return 0;
}