Cod sursa(job #45204)

Utilizator DastasIonescu Vlad Dastas Data 1 aprilie 2007 11:11:14
Problema Shop Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#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;
}