Cod sursa(job #2563917)

Utilizator SimionAlexSimion Alex SimionAlex Data 1 martie 2020 16:08:39
Problema Shop Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <bits/stdc++.h>

using namespace std;

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

int n,baza,i,nrbani=0;
long long suma;

struct bani
{
    int putere,nr,nrctr,nr1;
    long long val;
};
bani v[35];

void afla_valoarea(int a,int k)
{
    long long s=1;
    for(int i=1;i<=a;i++)
        s*=baza;
    v[k].val=s;
}

void citire()
{
    in>>n>>baza>>suma;
    for(int i=1; i<=n;i++)
    {
        v[i].nrctr=i;
        in>>v[i].putere>>v[i].nr;
        v[i].nr1=v[i].nr;
        afla_valoarea(v[i].putere,i);
    }
}

int comp(bani a, bani b)
{
    return (a.val>b.val);
}
int compnrctr(bani a, bani b)
{
    return (a.nrctr<b.nrctr);
}

int pozz(long long val)
{
    for(i=1;i<=n;i++)
        if(v[i].val<=val && v[i].nr>0)
        return i;
}

void solve()
{
    sort(v+1,v+1+n,comp);
    while(suma>0)
    {
        i=pozz(suma);
        while(suma>=v[i].val && v[i].nr>0)
        {
            suma-=v[i].val;
            v[i].nr--;
            nrbani++;

        }

    }
    sort(v+1,v+1+n,compnrctr);

}
void afisare()
{
    out<<nrbani<<endl;
    for(i=1;i<=n;i++)
        out<<v[i].nr1-v[i].nr<<" ";

}
int main()
{
    citire();
    solve();
    afisare();
    return 0;
}