Cod sursa(job #301255)

Utilizator ooctavTuchila Octavian ooctav Data 8 aprilie 2009 02:10:57
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <cstdio>
int n;
long long c,l;
long long e[31];
int nr[31];
int monezi[31],suma=0;
bool b[31];
void citire()
{
     int a;
     long long c2;
     scanf("%d%lld%lld",&n,&c,&l);
     c2=c;
     for(int i=1;i<=n;i++)
     {
             c2=c;
             scanf("%d%d",&a,&nr[i]);
             if(a==0)
                   e[i]=1;
             else
             {
                   for(int j=2;j<=a;j++)
                         c2=c2*c;
                   e[i]=c2;
             }
     }
}
void rezolva()
{
     long long d;
     long long max=0,j2;
     for(int i=1;i<=n;i++)
     {
             max=0;
             for(int j=1;j<=n;j++)
                              if(!b[j] && e[j]>max)
                              {
                                       max=e[j];
                                       j2=j;
                              }
             b[j2]=true;
             if(l/e[j2]>=nr[j2])
                              d=nr[j2];
             else
                              d=l/e[j2];
             monezi[j2]=d;
             suma=suma+d;
             l=l-d*e[j2];
     }
}
void scrie()
{
     printf("%d\n",suma);
     for(int i=1;i<=n;i++)
             printf("%d ",monezi[i]);
}
int main()
{
    freopen("shop.in","r",stdin);
    freopen("shop.out","w",stdout);
    citire();
    rezolva();
    scrie();
    return 0;
}