Cod sursa(job #690168)

Utilizator VmanDuta Vlad Vman Data 25 februarie 2012 12:13:00
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <cstring>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
using namespace std;

#define Nmax 32

int A[Nmax], B[Nmax], N, C, i, j, ind[Nmax];
long long L, X, k, tot;

inline int max(int a, int b) { return a>b?a:b; }
inline int min(int a, int b) { return a<b?a:b; }
inline int modul(int a) { return a>0?a:-a; }

int cmp(const int &a, const int &b)
{
    return A[a] > A[b];
}

int main()
{
     freopen("shop.in","r",stdin);
     freopen("shop.out","w",stdout);
     
     scanf("%d %d %lld",&N, &C, &L);
     for (i=0; i<N; ++i)
     {
         scanf("%d %d", &A[i], &B[i]);
         ind[i] = i;
     }
     
     sort(ind, ind+N, cmp);
     
     for (i=0; i<N; ++i)
     {
         X = 1;
         for (j=1; j<=A[ind[i]] && X<=L; ++j)
             X *= C;
         k = L / X;
         if (k > B[ind[i]]) k = B[ind[i]];
         L -= X*k;
         tot += k;
         B[ind[i]] = k;
     }
     
     printf("%lld\n", tot);
     for (i=0; i<N; ++i)
         printf("%d ", B[i]);
     
     return 0;   
}