Pagini recente » Cod sursa (job #593062) | Cod sursa (job #817946) | Cod sursa (job #1454016) | Cod sursa (job #2839893) | Cod sursa (job #946536)
Cod sursa(job #946536)
#include<fstream>
using namespace std;
ifstream in("shop.in");
ofstream out("shop.out");
const int MAX=30;
long long N, C, L, NR, a[MAX];
int i;
struct MONEDA{ int ind; long long nr, val;} v[MAX];
void qSort(int st, int dr);
void scrie();
int main()
{
long long var;
in>>N>>C>>L;
for(i=0;i<N;i++)
{
in>>var>>v[i].nr;
v[i].ind=i, v[i].val=1;
while(var--)
v[i].val*=C;
}
qSort(0, N-1);
//scrie();
i=0;
while(L>0)
{
if(v[i].nr==0)
i++;
if(L-v[i].val>=0)
NR++, L-=v[i].val, v[i].nr--, a[v[i].ind]++;
else i++;
}
out<<NR<<'\n';
for(i=0;i<N;i++)
out<<a[i]<<' ';
out<<'\n';
in.close();
out.close();
return 0;
}
void qSort(int st, int dr)
{
int min=st, max=dr;
MONEDA pivot=v[(st+dr)/2], tmp;
while(min<=max)
{
while(v[min].val>pivot.val)
min++;
while(v[max].val<pivot.val)
max--;
if(min<=max)
tmp=v[min], v[min]=v[max], v[max]=tmp, min++, max--;
}
if(st<max)
qSort(st,max);
if(dr>min)
qSort(min,dr);
}
void scrie()
{
for(int i=0; i<N; i++)
out<<v[i].ind<<' '<<v[i].val<<' '<<v[i].nr<<'\n';
}