Cod sursa(job #844846)

Utilizator informatician28Andrei Dinu informatician28 Data 29 decembrie 2012 21:04:11
Problema Shop Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>
#include <algorithm>
#include <cmath>
#define DIM 31

using namespace std;

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

struct moneda
{
    int pos, A, B;
}M[DIM];
int N, C, Sol;
long long L;

bool comp (const moneda &unu, const moneda &doi)
{
    return unu.A > doi.A;
}

bool comp2 (const moneda & unu, const moneda &doi)
{
    if (unu.pos > doi.pos) return unu.pos < doi.pos;
}

int minim (int a, int b)
{
    if (a < b) return a;
    else return b;
}

int main()
{
    int i, k;

    in >> N >> C >> L;
    for (i = 1; i <= N; i++)
    {
        in >> M[i].A >> M[i].B;
        M[i].pos = i;
    }
    sort(M + 1, M + N + 1, comp);
    for (i = 1; i <= N; i++)
    {
        long long var = pow(C, M[i].A);
        k = minim(M[i].B, L/var);
        L -= (long long)(k*var);
        M[i].B = k;
        Sol += k;
    }
    sort(M + 1, M + N + 1, comp2);
    out << Sol << '\n';
    for (i = 1; i <= N; i++)
    {
        out << M[i].B << " ";
    }
    return 0;
}