Pagini recente » Cod sursa (job #397232) | Cod sursa (job #2495223) | Cod sursa (job #2215745) | Cod sursa (job #1682579) | Cod sursa (job #2170714)
#include <bits/stdc++.h>
using namespace std;
ifstream f("shop.in");
ofstream g("shop.out");
unsigned long long L;
int n,c,monezif,mu[32];
struct moneda{int v,a,poz;}monezi[100000001]; //tinem minte valoarea, numarul aparitiilor si pozitia fiecarei monede
int cmp(moneda a, moneda b) //criteriul de sortare
{
return (a.v>b.v);
}
int main()
{
int i;
f>>n>>c>>L;
for(i=1;i<=n;i++)
{
f>>monezi[i].v>>monezi[i].a;
monezi[i].poz=i;
}
sort(monezi+1,monezi+n+1,cmp);
for(i=1;i<=n && L>0;i++)
{
long long valoare=1<<monezi[i].v;//2 la puterea monezi[i].v
long long cat=L/valoare;
long long amin=min(cat,1LL*monezi[i].a);
if(amin>0)
{
monezif+=amin;
mu[monezi[i].poz]=amin;
L=L-amin*valoare;
}
}
g<<monezif<<'\n';
for(i=1;i<=n;i++)
g<<mu[i]<<' ';
f.close();
g.close();
return 0;
}