Cod sursa(job #37813)

Utilizator kaesarioDumi Loghin kaesario Data 25 martie 2007 12:43:13
Problema Shop Scor 0
Compilator c Status done
Runda preONI 2007, Runda 4, Clasa a 9-a si gimnaziu Marime 1.21 kb
#include <stdio.h>
int main()
{
    long int l, a[30], p, s[30];
    int n, i, j, k, c, b[30], nrmin, nr, x[30], y[30]={0}, m;
    FILE *f=fopen("shop.in","rt");
    fscanf(f,"%i %i %li", &n, &c, &l);
    for (i=0; i<n; i++) 
    {
        fscanf(f,"%li %i", a+i, b+i); 
        p=1;
        for (j=0; j<a[i]; j++)
         p=p*c;
        a[i]=p; 
    }
    fclose(f);
    
    k=1;
    x[k]=0;
    s[0]=0;
    m=0;
    nrmin=2000000;
    do
    {
        while (x[k]<b[k-1])
        {
          x[k]++;
          s[k]=s[k-1]+x[k]*a[k-1];
           if (s[k]==l)
            {
               nr=0;
               for (i=1; i<=k; i++) nr+=x[i];
               if (nr<nrmin) 
                {
                  nrmin=nr;
                  for (i=1; i<=k; i++) y[i]=x[i];
                  m=k;
                }
                
            }  
            else 
             if (k<=n)
             {
                k++;
                x[k]=0;
             }  
        }
        k--;
    }
    while (k>0);
    f=fopen("shop.out","wt");
    fprintf(f,"%i\n", nrmin);
    for (i=1; i<=m; i++) fprintf(f,"%i ", y[i]);
    fprintf(f,"\n");
    fclose(f);
    
    return 0;
}