Pagini recente » Cod sursa (job #350728) | Cod sursa (job #2938422) | Cod sursa (job #2392381) | Cod sursa (job #824173) | Cod sursa (job #45204)
Cod sursa(job #45204)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream in("shop.in");
ofstream out("shop.out");
int n;
int c;
long long L;
struct monezi
{
int a;
long long b;
int indice;
};
monezi m[30];
void read()
{
in >> n >> c >> L;
for ( int i = 0; i != n; ++i )
{
in >> m[i].a >> m[i].b;
m[i].indice = i;
}
//sort
for ( int i = 0; i != n-1; ++i )
for ( int j = i + 1; j != n; ++j )
if ( m[i].a > m[j].a )
{
monezi t = m[i];
m[i] = m[j];
m[j] = t;
}
}
int main()
{
read();
int folosite[30];
int nrmonezi = 0;
memset(folosite, 0, sizeof(folosite));
int t = n-1;
while ( L != 0 )
{
if ( m[t].b != 0 )
{
long long p = pow(c, m[t].a);
if ( L - p >= 0 )
{
L -= p;
--m[t].b;
++folosite[m[t].indice];
++nrmonezi;
}
else
--t;
}
else
--t;
}
out << nrmonezi << endl;
for ( int i = 0; i != n; ++i )
if ( folosite[i] )
out << folosite[i] << " ";
out << endl;
return 0;
}