Pagini recente » Cod sursa (job #3241871) | Cod sursa (job #1071355) | Cod sursa (job #2133373) | Cod sursa (job #3199657) | Cod sursa (job #66347)
Cod sursa(job #66347)
using namespace std;
#define MAX_N 35
#define min(a,b) ((a)<(b)?(a):(b))
#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;
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; }
int v;
for (i=1; i<=n; i++)
{
v=min(L/power(c,a[i].vl),a[i].n);
sol[a[i].p]+=v;
L-=v*power(c,a[i].vl);
ct+=v;
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;
}