Cod sursa(job #68187)

Utilizator FlorianFlorian Marcu Florian Data 26 iunie 2007 20:48:20
Problema Shop Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include<stdio.h>
#include<stdlib.h>
long long l;
int c,n;
FILE*f=fopen("shop.in","r");
FILE*g=fopen("shop.out","w");
typedef struct
        {
        long x,y,z;
        }element;
element a[10000];
long ii[1000];
void read()
        {
        fscanf(f,"%d %d %ld",&n,&c,&l);
        for(int i=0;i<n;++i)
               { fscanf(f,"%ld %ld",&a[i].x,&a[i].y);
                 a[i].z=i;
                 }
        }
int min(long a, long b)
        {
        if(a>b) return a;
        else return b;
        }
int intcmp(const void *a, const void *b)
        {
        return *(int*)a-*(int*)b;
        }
long viz[1000];
int calcul()
        {
        long long k=0,s=0,sol=0;
        long p,i,j;
         qsort(a,n,sizeof(a[0]),intcmp);
        i=n-1;
        while(s!=l&&i>=0)
                {
                j=1;
                p=1;
                while(j<=a[i].x) {p*=c;j++;}
                j=0;
                while(j<a[i].y&&s+p<=l)
                        {
                         s+=p;
                         j++;
                         }
                 k++;
                viz[a[i].z]=j;
                sol+=j;
                i--;
                  }
        fprintf(g,"%ld\n",sol);
        for(i=0;i<n;++i) fprintf(g,"%ld ",viz[i]);
        }
int main()
        {
        read();
        calcul();
        return 0;
        }