Cod sursa(job #1242382)

Utilizator vyrtusRadu Criuleni vyrtus Data 14 octombrie 2014 13:20:12
Problema Shop Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.96 kb
#include <fstream>
#include <cmath>

using namespace std;

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

unsigned long long n,c,l,aux;
unsigned long long  val[31];
unsigned long long  rez[31];
int poz[31];

int main()
{
        f >> n >> c >> l ;
        for (int i=1;i<=n;i++)
        {
                long long a,b;
                f >> a >> b;
                val[a] +=b;
                poz[i] = a;
        }

    aux = 0; int i = 30;
    long long mon = 0;

    while (aux < l)
    {
        for (int j=1;(j<=val[i]) && (aux+pow(c,i) <= l) ;j++)
        {
            aux += pow(c,i);
            rez[i] ++;
            mon ++;
        }
        i--;
    }
         g << mon << "\n";
    for (int i=1;i<=n;i++)
        g << rez[ poz[i] ] << " ";

    return 0;
}

/*#include <fstream>
#include <cmath>
#include <iostream>
#include <algorithm>

typedef unsigned long long big;
using namespace std;

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

int N,C,R;
big L;
struct plata{
    int poz;
    big val;
    big num;
    };

plata A[31];
big REZ[31];

inline big putere(int p)
{
    if (p == 0) return 1;
    big temp = C;
    for (int i=1; i<p ; i++)
        temp *= C;
    return temp;
}

int cmp(plata A, plata B)
{
    return A.val>B.val;
}

int main()
{
        f >> N >> C >> L ;
        for (int i=1; i <= N ; i++)
        {
            int x,y;
            f >> x >> y;
            A[i].poz = i;
            A[i].val = putere(x);
            A[i].num = y;
        }

    sort(A+1,A+N+1,cmp);

    int i = 1;

  while (L)
  {
    big temp ;
    temp = L / A[i].val;
    temp = min(temp,A[i].num);
    REZ[A[i].poz] = temp;
    L -= A[i].val * temp;
    R += temp;
    i++;
  }
    g << R << '\n';
    for (int i=1; i<= N ; i++)
        if (REZ[i]) g << REZ[i] << ' ';
/*
    for (int i=1; i <= N ; i++)
        cout << A[i].val << "  " << A[i].num << '\n';
*/
    return 0;
}
*/