Cod sursa(job #2785922)

Utilizator Catalinu23Gavrila Catalin Catalinu23 Data 19 octombrie 2021 20:23:43
Problema Shop Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <bits/stdc++.h>
using namespace std;

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

unsigned long long n,c,L,put_max,s;
unsigned long long fr[35], put[35];
struct moneda
{
    unsigned long long a;
    unsigned long long b;
    unsigned long long poz;
    unsigned long long rez;
} v[35];

bool cmp(const moneda A, const moneda B)
{
    return A.a > B.a;
}

bool cmp_poz(const moneda A, const moneda B)
{
    return A.poz < B.poz;
}

int main()
{
    fin>>n>>c>>L;
    for(int i=1; i<=n; i++)
    {
        fin>>v[i].a>>v[i].b;
        v[i].poz = i;
        put_max = max(put_max, v[i].b);
    }
    put[0] = 1;
    for(int i=1; i<=put_max; i++)
        put[i] = c*put[i-1];
    sort(v+1, v+n+1, cmp);
    for(int i=1; i<=n; i++)
    {
        cout<<v[i].a<<" "<<v[i].b<<"\n";
        while(v[i].b > 0 && L >= put[v[i].a])
        {
            L -= put[v[i].a];
            v[i].b--;
            v[i].rez++;
        }
    }
    sort(v+1, v+n+1, cmp_poz);
    for(int i=1; i<=n; i++)
        s+=v[i].rez;
    fout<<s<<"\n";
    for(int i=1; i<=n; i++)
        fout<<v[i].rez<<" ";
    return 0;
}