Pagini recente » Cod sursa (job #2073415) | Cod sursa (job #2273797) | Cod sursa (job #2782798) | Cod sursa (job #334369) | Cod sursa (job #1668636)
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("shop.in");
ofstream g("shop.out");
int n,k,c;
long long w[30];
long long S;
struct lista
{
int v;
long long b;
int poz;
}a[30];
void poz(lista a[30],int li,int ls,int&k)
{
int i=li,j=ls,c,i1=0,j1=-1;
while(i<j)
{
if(a[i].v<a[j].v)
{
c=a[j].v; a[j].v=a[i].v;
a[i].v=c; c=i1;
c=a[j].b; a[j].b=a[i].b;
a[i].b=c; c=i1;
c=a[j].poz; a[j].poz=a[i].poz;
a[i].poz=c; c=i1;
i1=-j1; j1=-c;
}
i=i+i1;
j=j+j1;
}
k=i;
}
void quick(int li,int ls)
{
if(li<ls)
{
poz(a,li,ls,k);
quick(li,k-1);
quick(k+1,ls);
}
}
int main()
{
int i,s=0,nr,q;
f>>n>>c>>S;
for(i=1;i<=n;i++)
{
f>>a[i].v>>a[i].b;
a[i].poz=i;
}
quick(1,n);
for(i=1;i<=n;i++)
{
nr=pow(c,a[i].v);
q=S/nr;
if(q>a[i].b) {s=s+a[i].b;S=S-nr*a[i].b;w[a[i].poz]=a[i].b;}
else {s=s+q;S=S-nr*q;w[a[i].poz]=q;}
}
g<<s<<'\n';
for(i=1;i<=n;i++) g<<w[i]<<" ";
return 0;
}