Pagini recente » Cod sursa (job #822759) | Cod sursa (job #2880409) | Cod sursa (job #782180) | Cod sursa (job #335282) | Cod sursa (job #1208597)
#include<iostream>
#include<fstream>
using namespace std;
#define NMAX 31
struct moneda {
int a,b,poz;
bool operator < (const moneda &c) const {
return a<c.a;
}
};
moneda v[31];
long long sol[NMAX];
long long putere(int x, int n)
{
if(n==0)
return 1;
if(n%2==0) {
long long aux = putere(x,n/2);
return 1LL*aux*aux;
}
else return 1LL*x*putere(x,n-1);
}
int main ()
{
int n,i,c;
long long l,val,nr,cnt;
ifstream f("shop.in");
ofstream g("shop.out");
f>>n>>c>>l;
for(i=1;i<=n;i++) {
f>>v[i].a>>v[i].b;
v[i].poz=i;
}
f.close();
sort(v+1,v+n+1);
cnt=0;
for(i=n;i>=1 && l>=1;i--) {
val=putere(c,v[i].a);
nr=1LL*l/val;
if(nr>v[i].b)
nr=v[i].b;
l=0LL+l-1LL*nr*val;
cnt=0LL+cnt+nr;
sol[v[i].poz]=nr;
}
g<<cnt<<'\n';
for(i=1;i<=n;i++)
g<<sol[i]<<" ";
g.close();
return 0;
}