Cod sursa(job #1002746)

Utilizator Dddarius95Darius-Florentin Neatu Dddarius95 Data 28 septembrie 2013 18:11:11
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>
#include <algorithm>
#define Lmax 10000000000000000
#define Amax 32
#define Nmax 35
using namespace std;

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

int n,C,A[Nmax],B[Nmax],sol[Nmax];
long long L;

struct Ban
{
    long long val;
    int nr,tip;
}M[Nmax];

bool cmp(Ban x,Ban y)
{
    return x.val>y.val;
}

long long Putere(long long N,long long P)
{

    long long m=1;
    while (P!=1)
    if(P % 2==0)
    {
        N=(N*N);
        P/=2;
    }
    else
    {
        m=(m*N);
        P--;
    }
    return (m*N);
}

int main()
{
    f>>n>>C>>L;
    for(int i=1;i<=n;i++)
    {
        int a,b;
        f>>a>>b;
        M[i].val=1;
        for(int j=1;j<=a;j++)M[i].val*=C;
        M[i].nr=b;
        M[i].tip=i;
    }
    sort(M+1,M+1+n,cmp);
    for(int i=1;i<=n && L!=0;i++)
    if(M[i].val<=L)
    {
        int aux=L/M[i].val,S=min(aux,M[i].nr);
        sol[0]+=S;
        sol[M[i].tip]+=S;
        L-=(M[i].val*S);

    }
    g<<sol[0]<<'\n';
    for(int i=1;i<=n;i++)g<<sol[i]<<' ';g<<'\n';
    f.close();g.close();
    return 0;
}