Cod sursa(job #2170714)

Utilizator RazvanChirilaRazvan RazvanChirila Data 15 martie 2018 09:31:35
Problema Shop Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#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;
}