Cod sursa(job #66346)

Utilizator floringh06Florin Ghesu floringh06 Data 17 iunie 2007 20:41:05
Problema Shop Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
using namespace std;

#define MAX_N 35
#define ll long long
#include <stdio.h>

typedef struct {
  int vl;
  int n;
  int p;
} Coin;

int n,c,ct;
ll L;
Coin a[MAX_N];
int sol[MAX_N];

FILE *fin=fopen("shop.in","r"),
     *fout=fopen("shop.out","w");
 
int power(int a, int b)
{ int i,c=a; 
  if (b==0) return 1;
  for (i=2; i<=b; i++) a*=c; 
  return a; } 
 
int main()
{
    fscanf(fin,"%d %d %lld",&n,&c,&L);
    int i,j,v;
    for (i=1; i<=n; i++) {
     fscanf(fin,"%d %d\n",&a[i].vl,&a[i].n);       
     a[i].p=i;
    }
    Coin aux;
    for (i=1; i<=n-1; i++)
     for (j=i+1; j<=n; j++)
      if (a[i].vl<a[j].vl)
       { aux=a[i]; a[i]=a[j]; a[j]=aux; }   
    for (i=1; i<=n; i++)
     {
       while (L-power(c,a[i].vl)>=0 && a[i].n>=1)       
        {
          sol[a[i].p]++;
          L-=power(c,a[i].vl);
          a[i].n--;
          ct++;
        }
       if (L==0) break; 
     }
    fprintf(fout,"%d\n",ct);
    for (i=1; i<=n; i++)
     fprintf(fout,"%d ",sol[i]);
    
    fclose(fin);
    fclose(fout);
    
    return 0;
}