Cod sursa(job #1409764)

Utilizator vladberaruvlad beraru alexandru vladberaru Data 30 martie 2015 18:21:13
Problema Shop Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("shop.in");
ofstream g("shop.out");
long long n,c,l,v[30],w[100],m[30],o[30];
int main()
{
    int i,j,aux,ok=0;
    f>>n>>c>>l;
    for(i=1;i<=n;i++) {f>>v[i]>>w[i];o[i]=i;}
    for(i=1;i<=n;i++)
        for(j=i;j<=n;j++)
        if(v[i]<v[j])
    {
        aux=v[i];
        v[i]=v[j];
        v[j]=aux;
        aux=w[i];
        w[i]=w[j];
        w[j]=aux;
        aux=o[i];
        o[i]=o[j];
        o[j]=aux;
    }
    for(i=1;i<=n;i++) v[i]=pow(c,v[i]);
    //for(i=1;i<=n;i++) g<<v[i]<<" "<<w[i]<<'\n';
    int u=1,k=0;
    while(l)
    {
        for(i=1;i<=n;i++)
            {
                k=0;
                while(k==0)
                if(l!=0)
                   if(v[i]*w[i]<=l) {l=l-v[i]*w[i];ok=ok+w[i];m[i]=w[i]; k=1;}
                   else {w[i]--; k=0;}
                if(w[i]==0) k=1;

       }
    }
    g<<ok<<'\n';
    for(i=1;i<=n;i++)
        for(j=i;j<=n;j++)
        if(o[i]>o[j])
    {
        aux=v[i];
        v[i]=v[j];
        v[j]=aux;
        aux=w[i];
        w[i]=w[j];
        w[j]=aux;
        aux=o[i];
        o[i]=o[j];
        o[j]=aux;
        aux=m[i];
        m[i]=m[j];
        m[j]=aux;
    }
    for(i=1;i<=n;i++) g<<m[i]<<" ";
    f.close();
    g.close();
    return 0;
}