Cod sursa(job #1005775)

Utilizator sebinechitasebi nechita sebinechita Data 5 octombrie 2013 19:19:35
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
#include <climits>
#include <algorithm>
#include <cmath>
#include <queue>
#include <deque>
#include <iomanip>

using namespace std;

ifstream fin("shop.in");
ofstream fout("shop.out");
#define baza 10
#define MAX 50000
typedef long long int lli;


struct sebi{
    int x,y,z,in;
};

sebi a[35];


lli pow(int n, int exp)
{
    lli p=1;
    while(exp)
    {
        if(exp&1)
            p*=n;
        n*=n;
        exp>>=1;
    }
    return p;
}

inline bool cmp(sebi b, sebi c)
{
    return b.x>c.x;
}

inline bool cmp2(sebi b, sebi c)
{
    return b.z<c.z;
}

int main()
{
    lli n, c, l;
    fin>>n>>c>>l;
    lli s=0, i;
    for(i=1;i<=n;i++)
    {
        fin>>a[i].x>>a[i].y;

        a[i].z=i;
    }
    sort(a+1, a+n+1, cmp);

    for(i=1;l;i++)
    {
        lli y=pow(c, a[i].x);
        while(l>=y && a[i].y)
        {
            l-=y;
            a[i].y--;
            a[i].in++;

        }
        s+=a[i].in;
    }
    sort(a+1,a+n+1, cmp2);
    fout<<s<<"\n";
    for(i=1;i<=n;i++)
    {
        fout<<a[i].in<<" ";
    }




    return 0;
}