Cod sursa(job #2001324)

Utilizator Mircea_DonciuDonciu Mircea Mircea_Donciu Data 16 iulie 2017 14:21:00
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 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,i,x;
unsigned long long sum,ansa;
unsigned long long expo(int baza, int exp)
{
    if(exp==0) return 1;
    unsigned long long tmp=expo(baza,exp/2);
    if(exp%2) return tmp*tmp*baza;
    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(i=1;i<=n;i++)
    {
        f>>x>>v[i].nr;
        v[i].val=expo(c,x);
        v[i].pos=i;
    }
    sort(v+1,v+n+1,cmp1);
    for(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(i=1;i<=n;i++) g<<v[i].used<<" ";
    g<<'\n';
    f.close();
    g.close();
    return 0;
}