Cod sursa(job #1870318)

Utilizator bucuralexandraioana05Bucur Alexandra bucuralexandraioana05 Data 6 februarie 2017 16:05:28
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.7 kb
#include <iostream>
#include<fstream>
using namespace std;

ifstream f("energii.in");
ofstream g("energii.out");

struct centrala
{
    int energie, cost;
};
int n,gmax,i,j,a[5002], b[5002],s;
centrala e[1001];
int main()
{
    f>>n>>gmax;
    for(i=1;i<=n;++i)
    {
        f>>e[i].energie>>e[i].cost;
        s+=e[i].energie;
    }
    if(s<gmax)
        g<<-1;
    else
    {
        for(i=1;i<=n;++i)
            for(j=1;j<=gmax;++j)
                {if(i%2==1)
                    {
                        if(e[i].energie>j)
                            a[j]=b[j];
                         else
                         {if(b[j]==0)
                         a[j]=e[i].cost+b[j-e[i].energie];
                            else
                            if(e[i].energie>=gmax)
                             a[j]=e[i].cost;
                            else
                                a[j]=min(b[j],e[i].cost+b[j-e[i].energie]);
                         }

                    }
                else
                {
                     if(e[i].energie>j)
                            b[j]=a[j];
                         else
                            {if(a[j]==0)
                               b[j]=e[i].cost+a[j-e[i].energie];
                            else
                            {if(e[i].energie>=gmax) b[j]=e[i].cost;
                              else
                              b[j]=max(a[j],e[i].cost+a[j-e[i].energie]);
                            }
                            }
                }
                }

        if(n%2==0)
            g<<b[gmax];
        else g<<a[gmax];
    }


    f.close();
    g.close();
    return 0;
}