Cod sursa(job #2445098)

Utilizator BaraianTudorBaraian Tudor Stefan BaraianTudor Data 2 august 2019 15:24:09
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <climits>
#define f first
#define s second
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
int g,w,sol[5005];
pair <int,int> e[1005];
int main()
{
    in>>g>>w;
    for(int i=1;i<=g;i++)
    {
        in>>e[i].f>>e[i].s;
    }
    sort(e+1,e+g+1);
    for(int i=1;i<=w;i++)
    {
        sol[i]=INT_MAX;
    }
    for(int i=1;i<=g;i++)
    {
        for(int j=w;j>=0;j--)
        {
            if(sol[j]!=INT_MAX)
            {
                if(j+e[i].f<=w)
                sol[j+e[i].f]=min(sol[j+e[i].f],e[i].s+sol[j]);
                else sol[w]=min(sol[w],e[i].s+sol[j]);
            }

        }
        if(e[i].f>w)
            sol[w]=min(sol[w],e[i].s);
    }
    if(sol[w]!=INT_MAX)
    out<<sol[w];
    else out<<-1;
    return 0;
}