Cod sursa(job #2765632)

Utilizator DragosC1Dragos DragosC1 Data 28 iulie 2021 20:26:05
Problema Shop Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <fstream>
#include <algorithm>
using namespace std;

int n, C;
long long L;

pair<pair<long long, long long>, long long> v[31];

void read() {
    int i;
    ifstream f("shop.in");
    f >> n >> C >> L;
    for (i = 1; i <= n; i++) {
        f >> v[i].first.first >> v[i].first.second;
        v[i].second = i;
    }
}

long long monezi[31];
long long nr;

bool csort(pair<pair<long long, long long>, long long> a, pair<pair<long long, long long>, long long> b) {
    if (a.first.first > b.first.first)
        return 1;
    return 0;
}

long long exp(long long a, long long b) {
    long long P = 1;
    while (b) {
        if (b & 1) 
            P = P * a;
        a = a * a;
        b /= 2;
    }
    return P;
}

void solve() {
    int i;
    sort(v + 1, v + n + 1, csort);
    for (i = 1; i <= n; i++) {
        monezi[i] = min(L / exp(C, v[i].first.first), v[i].first.second);
        L -= monezi[i] * exp(C, v[i].first.first);
        nr += monezi[i];
    }
}

void output() {
    int i, j;
    ofstream g("shop.out");
    g << nr << '\n';
    for (i = 1; i <= n; i++)
        for (j = 1; j <= n; j++)
            if (v[j].second == i)
                g << monezi[j] << ' ';
    g.close();
}

int main() {
    read();
    solve();
    output();
    return 0;
}