Cod sursa(job #1389183)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 16 martie 2015 08:40:50
Problema Shop Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.67 kb
#include <cstdio>
int n,c;
int b[33];
int p[33];
int fol[33];
long long l;
void desc(long long nr)
{
     int p,put=0;
     for(p=1;;p*=c)
     {
                   if(p*c>nr)
                   {
                              break;
                   }
                   put++;
     }
     while(nr!=0)
     {
                 if(nr>=p)
                 {
                          while(nr>=p)
                          {
                            nr-=p;
                            b[put]++;
                          }
                 }
                 put--;
                 p/=c;
     }
}
int main()
{
    FILE *fin;
    fin=fopen ("shop.in","r");
    freopen ("shop.out","w",stdout);
    fscanf(fin,"%d%d%lld",&n,&c,&l);
    int a,bx;
    for(int i=1;i<=n;i++)
    {
            fscanf(fin,"%d%d",&a,&bx);
            p[a]+=bx;
    }
    desc(l);
    for(int i=32;i>=0;i--)
    {
            if(b[i]!=0)
            {
                       if(b[i]>=p[i])
                       {
                                    b[i]-=p[i];
                                    fol[i]+=p[i];
                       }
                       else
                       {
                           fol[i]=b[i];
                           b[i]=0;
                       }
                       if(i!=0) b[i-1]+=c*b[i];
            }
    }
    long long sum=0;
    for(int i=0;i<=32;i++) sum+=fol[i];
    printf("%lld\n",sum);
    fclose(fin);
    freopen ("shop.in","r",stdin);
    scanf("%d%d%lld",&n,&c,&l);
    for(int i=1;i<=n;i++)
    {
            scanf("%d%d",&a,&bx);
            printf("%d ",fol[a]);
    }
    fclose(fin);
}