Pagini recente » Cod sursa (job #1277624) | Cod sursa (job #2374840) | Cod sursa (job #2211245) | Cod sursa (job #493460) | Cod sursa (job #783932)
Cod sursa(job #783932)
#include<cstdio>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
#define mp make_pair
#define pb push_back
#define fs first
#define sc second
bool funct( pair < pair<int ,long long> ,int > x, pair < pair<int,long long> ,int > y)
{
return (x.first.first>y.first.first);
}
inline int min (int a,int b)
{
return a<b ? a:b;
}
vector < pair < pair <int, long long> ,int > > v;
int main()
{
freopen("shop.in","r",stdin);
freopen("shop.out","w",stdout);
long long l,b;
int nr[31]={0};
int c,n,ind,cont=0,a;
scanf("%d %d %lld",&n,&c,&l);
for(int i=0;i<n;++i)
{
scanf("%d %lld",&a,&b);
v.pb(mp( mp (a,b ),i) );
}
sort(v.begin(),v.end(),funct);
ind=0;
while(l&&ind<n)
{
nr[v[ind].sc]=min(v[ind].fs.sc,l/pow((double)c,(double)v[ind].fs.fs));
cont+=nr[v[ind].sc];
l-=nr[v[ind].sc]*pow((long double) c,(long double)v[ind].fs.fs);
++ind;
}
printf("%d\n",cont);
for(int i=0;i<n;++i)
{
printf("%d ",nr[i]);
}
return 0;
}