Cod sursa(job #805689)

Utilizator alexalghisiAlghisi Alessandro Paolo alexalghisi Data 31 octombrie 2012 21:56:22
Problema Shop Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#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.x=1;
        a[i].y.y=i;
        a[i].y.x=lgput(c,a[i].x.putere);
       // cout<<a[i].y.x<<endl;
    }
    sort(a+1,a+n+1,cmp);
    int S=0;

    int P=0;
    while(S!=l)
    {
        for(int i=1;i<=n;i++) // incepem cu cele mai mari
        {
            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;
        }
    }
    g<<P<<endl;
    for(int i=1;i<=n;i++)
        g<<ap[i]<<" ";
    return 0;
}