Cod sursa(job #2966521)

Utilizator andreibrosPeta Andrei Mathias andreibros Data 17 ianuarie 2023 19:18:02
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
struct celula
{
    int c;
    int e;
} v[1005];
int a[5050];
int main()
{
    int g,w;
    //int s=0;
    in>>g;
    in>>w;
    for(int i=1; i<=g; i++)
    {
        in>>v[i].e>>v[i].c;
      //  s+=v[i].e;
    }

    /*if(w>s)
    {
        cout<<-1;
        return 0;
    }*/
    for(int i=1; i<=w; i++)
        a[i]=-1;
    a[0]=0;
    for(int i=1; i<=g; i++)
    {
        for(int k=w+v[i].e; k>=v[i].e; k--)
        {
            if(a[k-v[i].e]!=-1)
            {
                if(k<w)
                {
                    if(a[k]==-1 || a[k-v[i].e]+v[i].c<a[k])
                        a[k]=a[k-v[i].e]+v[i].c;
                }
                else
                {
                    if(a[w]==-1 || a[k-v[i].e]+v[i].c<a[w])
                        a[w]=a[k-v[i].e]+v[i].c;
                }
            }


        }
    }
    out<<a[w];
    return 0;
}