Cod sursa(job #631539)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 8 noiembrie 2011 14:55:24
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<stdio.h>
#define ll long long
#define N 31
ll l,y,n,c,a[N],b[N],m,j,i,x[N],z;

ll put(ll x,ll n)
{if(!n)
        return 1;
if(n%2)
        return x*put(x,(n-1)/2)*put(x,(n-1)/2);
return put(x,n/2)*put(x,n/2);}

ll min(ll x,ll y)
{return x<y?x:y;}

int main()
{FILE *f=fopen("shop.in","r"),*g=fopen("shop.out","w");
fscanf(f,"%lld%lld%lld",&n,&c,&l);
for(i=1;i<=n;i++)
       fscanf(f,"%lld%lld",&a[i],&b[i]);
while(l)
       {m=-1,j=0;
       for(i=1;i<=n;i++)
       if(m<a[i])
              m=a[i],j=i;
       y=put(c,m);
       x[j]=min(l/y,b[j]);
       a[j]=-1,l-=(x[j]*y),z+=x[j];}
fprintf(g,"%lld\n",z);
for(i=1;i<=n;i++)
       fprintf(g,"%lld ",x[i]);
return 0;}