Pagini recente » Profil vladstoick | Cod sursa (job #629040) | profilul iuliei | Cod sursa (job #2016221) | Cod sursa (job #1305714)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("shop.in");
ofstream g("shop.out");
int n, c, a;
long long l, nrtip[35], nrm;
struct moneda
{
int a;
int b;
int pozi;
}m[35];
long long powr(int base, int exp) {
long long res=1;
while (exp!=0) {
if (exp%2==1)
res=res*base;
base*=base;
exp/=2;
}
return res;
}
bool cmp(const moneda &m1, const moneda &m2)
{
return m1.a > m2.a;
}
int main()
{
f>>n>>c>>l;
for (int i=1; i<=n; i++) {
f>>m[i].a>>m[i].b;
m[i].pozi=i;
}
sort (m+1, m+n+1, cmp);
for (int i=1; i<=n; i++) {
int tmp=l/powr(c, m[i].a);
nrtip[m[i].pozi]=min(m[i].b, tmp);
l = l - powr(c, m[i].a) * nrtip[m[i].pozi];
nrm+=nrtip[m[i].pozi];
}
g<<nrm<<"\n";
for (int i=1; i<=n; i++)
g<<nrtip[i]<<" ";
return 0;
}