Cod sursa(job #1066337)

Utilizator alex_HarryBabalau Alexandru alex_Harry Data 24 decembrie 2013 15:54:45
Problema Shop Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("shop.in");
ofstream g("shop.out");
long long N,C,L;
struct Coin{
long long val;
long long apar;
long long position;
} Array[35];
int ind;
long long Result;
long long Sol[35];
inline bool compare(Coin a,Coin b)
{
    return a.val>b.val;
}
void Read()
{
    int i;
    f>>N>>C>>L;
    for(i=1;i<=N;i++)
        f>>Array[i].val>>Array[i].apar,Array[i].position=i;
    sort(Array+1,Array+N+1,compare);
}
/**void Descomp()
{
    long long i;
    while(L>0)
    {
        Vcar[ind++]=L%C;
        L/=C;
    }
}**/
long long power(long long x,long long y)
{
    long long i,p=1;
    for(i=1;i<=y;i++)
        p*=x;
    return p;
}
void Solve()
{
    int i;
    for(i=1;i<=N;i++)
    {
        int aux=power(C,Array[i].val);
        int number=0;
        if(L/aux>Array[i].apar)
            number=Array[i].apar;
        else
            number=L/aux;
        Result+=number;
        Sol[Array[i].position]=number;
        L-=number*aux;
    }
}
void Print()
{
    g<<Result<<"\n";
    for(int i=1;i<=N;i++)
        g<<Sol[i]<<" ";
    g<<"\n";
}
int main()
{
    Read();
    Solve();
    Print();
    return 0;
}