Pagini recente » Cod sursa (job #2895676) | Cod sursa (job #667997) | Cod sursa (job #2747671) | Cod sursa (job #2851669) | Cod sursa (job #805705)
Cod sursa(job #805705)
#include <iostream>
#include <fstream>
#include <algorithm>
#define putere first
#define numar second
#define x first
#define y second
#define p pair<pair <int,int> , pair<int,int> >
using namespace std;
p a[32];
int ap[32];
bool cmp(p a ,p b)
{
return a.y>b.y;
}
int lgput(int nr,int put)
{
if(put==0)
return 1;
if(put==1)
return nr;
if(put%2==0)
{
int rez=lgput(nr,put/2);
return rez*rez;
}
else
return nr*lgput(nr,put-1);
}
int main()
{
int n,c,l;
ifstream f("shop.in");
ofstream g("shop.out");
f>>n>>c>>l;
for(int i=1;i<=n;i++)
{
f>>a[i].x.putere>>a[i].x.numar;
a[i].y.y=i;
a[i].y.x=lgput(c,a[i].x.putere);
}
sort(a+1,a+n+1,cmp);
int S=0;
int P=0;
bool first=true;
while(S!=l)
{
for(int i=1;i<=n;i++)
{
if(first==true)
{
int dist=l-S;
int k=dist/a[i].y.x;
k=min(k,a[i].x.numar);
S+=k*a[i].y.x;
P+=k;
ap[a[i].y.y]=k;
}
else
{
int k=--ap[a[i].y.y];
S+=k*a[i].y.x;
P+=k;
first=true;
}
}
first=false;
if(S!=l)
S=0;
}
g<<P<<"\n";
for(int i=1;i<=n;i++)
g<<ap[i]<<" ";
return 0;
}