Cod sursa(job #2766963)

Utilizator BAlexandruBorgovan Alexandru BAlexandru Data 4 august 2021 10:37:09
Problema Shop Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

ifstream f("shop.in");
ofstream g("shop.out");

class moneda
{
    public:
        int nr, index;
        long long val;

        moneda()
        {
            val = nr = index = 0;
        }

        moneda(long long _VAL, int _NR, int _INDEX)
        {
            val = _VAL;
            nr = _NR;
            index = _INDEX;
        }
};

bool cmp(moneda &a, moneda &b)
{
    return a.val > b.val;
}

long long ridLog(long long n, int p)
{
    long long ans = 1;

    while (p)
    {
        if (p % 2)
            ans = ans * n;

        n = n * n;
        p /= 2;
    }

    return ans;
}

int n;
long long c, l;

vector < moneda > m;

int ans[31];

int main()
{
    f >> n >> c >> l;

    for (int i = 1; i <= n; i++)
    {
        int a, b;
        f >> a >> b;
        m.push_back(moneda(ridLog(c, a), b, i));
    }

    sort(m.begin(), m.end(), cmp);

    int nr = 0;
    for (auto it : m)
        if (l >= it.val)
        {
            long long aux = min(1LL * it.nr, l / it.val);
            ans[it.index] = aux;

            nr += aux;
            l -= aux * it.val;
        }

    g << nr << "\n";
    for (int i = 1; i <= n; i++)
        g << ans[i] << " ";

    return 0;
}