Cod sursa(job #1668698)

Utilizator rexlcdTenea Mihai rexlcd Data 29 martie 2016 23:35:20
Problema Shop Scor 60
Compilator cpp Status done
Runda oni-simulare-7-8-9-10-db Marime 1.15 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

struct moneda
{
    int nr,pos,used;
    unsigned long long val;
} v[32];

int n,c,sum,ansa;

unsigned long long expo(int baza, int exp)
{
    if(exp==0)
        return 1;
    else
    {
        unsigned long long tmp=expo(baza,exp/2);
        if(exp%2)
            return tmp*tmp*baza;
        else
            return tmp*tmp;
    }
}

bool cmp1(moneda x, moneda y)
{
    return x.val>y.val;
}

bool cmp2(moneda x, moneda y)
{
    return x.pos<y.pos;
}

int main()
{
    ifstream f("shop.in");
    ofstream g("shop.out");
    f>>n>>c>>sum;
    for(int i=1;i<=n;i++)
    {
        int x;
        f>>x>>v[i].nr;
        v[i].val=expo(c,x);
        v[i].pos=i;
    }
    sort(v+1,v+n+1,cmp1);
    for(int i=1;i<=n;i++)
        while(v[i].val<=sum && v[i].nr)
        {
            sum-=v[i].val;
            v[i].nr--;
            v[i].used++;
            ansa++;
        }
    sort(v+1,v+n+1,cmp2);
    g<<ansa<<'\n';
    for(int i=1;i<=n;i++)
        g<<v[i].used<<" ";
    g<<'\n';
    f.close();
    g.close();
    return 0;
}