Cod sursa(job #212576)

Utilizator zombie_testertest test zombie_tester Data 5 octombrie 2008 20:49:41
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
# include <cstdio>
# include <algorithm>

using namespace std;

# define FIN "shop.in"
# define FOUT "shop.out"
# define MAXN 35

struct elem 
{
   long long a,b,d;
} A[MAXN];

long long N,L,C,i,j,ct,c;
long long s[MAXN];

    int cmp(elem a, elem b)
    {
        return a.a>b.a;
    }

    int main()
    {
        freopen(FIN,"r",stdin);
        freopen(FOUT,"w",stdout);
        
        scanf("%lld%lld%lld",&N,&C,&L);
        for (i = 1; i <= N; ++i)
          {
            scanf("%lld%lld",&A[i].a,&A[i].b);
            A[i].d = i;
          }
        
        sort(A+1,A+N+1,cmp);
        
        ct = 0;
        for (i = 1; i <= N; ++i)
          {
             c = 1;
             for (j = 1; j <= A[i].a && c <= L; ++j)
               c *= C;
             if (j > A[i].a)
               {
                  if (L/c <= A[i].b)
                    {
                       ct += L/c;
                       s[A[i].d] = L/c;
                       L = L%c;
                    }
                  else
                    {
                       ct += A[i].b;
                       s[A[i].d] = A[i].b;
                       L = L-c*A[i].b;
                    }
               }               
          }
        
        printf("%lld\n",ct);
        for (i = 1; i <= N; ++i)
          printf("%lld ",s[i]);
                
        return 0;
    }