Cod sursa(job #2079590)

Utilizator _DanielArvat Ovidiu Daniel _Daniel Data 1 decembrie 2017 16:17:50
Problema Shop Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

ifstream fin("shop.in");
ofstream fout("shop.out");

struct nod
{
    int cost, monede, indice;
};

bool comp(nod x, nod y)
{
    return x.cost > y.cost;
}

int main()
{
    int n, c, L, P, platite[50];
    nod v[50];

    fin >> n >> c >> L;

    for(int i=1;i<=n;i++)
    {
        fin >> P >> v[i].monede;

        int PP=c;

        if(P==0)
            PP=1;

        while(P-1>0)
        {
            PP*=c;
            P--;
        }

        v[i].cost=PP;
        v[i].indice=i;
    }

    sort(v+1,v+n+1,comp);

    int sum=0, no=0;

    for(int i=1;i<=n;i++)
    {
        int no_actual=0;

        while(sum+v[i].cost<=L&&v[i].monede)
        {
            sum+=v[i].cost;
            v[i].monede--;

            no_actual++;
            no++;
        }

        platite[v[i].indice]=no_actual;
    }

    fout << no << "\n";

    for(int i=1;i<=n;i++)
        fout << platite[i] << " ";

    return 0;
}