Cod sursa(job #2966511)

Utilizator andreibrosPeta Andrei Mathias andreibros Data 17 ianuarie 2023 19:07:12
Problema Energii Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 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[10000100];
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<=s; i++)
        a[i]=-1;
    a[0]=0;
    for(int i=1; i<=g; i++)
    {
        for(int k=s; k>=v[i].e; k--)
            if(a[k-v[i].e]!=-1 && (a[k]==-1 || a[k-v[i].e]+v[i].c<a[k]))
                a[k]=a[k-v[i].e]+v[i].c;
    }
    int minim;
    int j=w;
    while(a[j]==-1 && j<=s)
        j++;

    minim=a[j];
    for(int i=j; i<=s; i++)
    {
        if(a[i]!=-1)
            minim=min(minim,a[i]);
    }
    out<<minim;
    return 0;
}