Pagini recente » Cod sursa (job #2926108) | Cod sursa (job #2146478) | Cod sursa (job #109511) | Cod sursa (job #513395) | Cod sursa (job #66356)
Cod sursa(job #66356)
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;
ll L,ct;
Coin a[MAX_N];
ll sol[MAX_N];
FILE *fin=fopen("shop.in","r"),
*fout=fopen("shop.out","w");
int min(ll a, ll b)
{ if (a<b) return a; else return b; }
ll power(int a, int b)
{ int i,c=a;
ll p=a;
if (b==0) return 1;
for (i=2; i<=b; i++) p*=c;
return p; }
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,"%lld\n",ct);
for (i=1; i<=n; i++)
fprintf(fout,"%lld ",sol[i]);
fclose(fin);
fclose(fout);
return 0;
}