Pagini recente » Cod sursa (job #295122) | Cod sursa (job #98640) | Borderou de evaluare (job #1567402) | Cod sursa (job #2366461) | Cod sursa (job #37498)
Cod sursa(job #37498)
#include <stdio.h>
#include <algorithm>
using namespace std;
int a[31],
b[31],
v[31];
long long p[31];
int i,n,c,o,x,q;
long long l,sum;
long long put(int x)
{
int i;
long long p=1;
for (i=1; i<=x; ++i) p*=c;
return p;
}
bool cmpf(const int x, const int y)
{
return a[x]<a[y];
}
int main()
{
freopen("shop.in","r",stdin);
freopen("shop.out","w",stdout);
scanf("%d %d %lld",&n,&c,&l);
for (i=1; i<=n; ++i)
scanf("%d %d",&a[i],&b[i]);
for (i=1; i<=n; ++i) v[i]=i;
sort(v+1,v+n+1,cmpf);
i=1;
p[1]=put(a[v[1]]);
while (p[i]<l && i<=n)
{
++i;
p[i]=put(a[v[i]]);
}
--i;
o=i;
while (l>0)
{
x=b[v[i]];
while (l>=p[i] && b[v[i]]>0)
{
l-=p[i];
--b[v[i]];
}
b[v[i]]=x-b[v[i]];
sum+=b[v[i]];
--i;
}
printf("%lld\n",sum);
q=i;
for (i=1; i<=q; ++i) b[v[i]]=0;
for (i=o+1; i<=n; ++i) b[v[i]]=0;
for (i=1; i<n; ++i) printf("%d ",b[i]);
printf("%d\n",b[n]);
return 0;
}