Cod sursa(job #3356206)

Utilizator stefan1010Stefan Bogdan stefan1010 Data 30 mai 2026 13:08:14
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
const int NMAX=1005;
const int SMAX=15001;
const int INF=1e9;
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
int n,s;
int v[NMAX],c[NMAX];
int sume[SMAX],cost[SMAX],smax;

void init()
{
    for(int i=0;i<SMAX;i++)
        cost[i]=INF;
}

int main()
{
    in>>n;
    in>>s;
    for(int i=1;i<=n;i++)
    {
        in>>v[i];
        in>>c[i];
    }
    init();
    smax=0;
    sume[0]=1;
    cost[0]=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=smax;j>=0;j--)
        {
            if(j+v[i]<SMAX && sume[j]!=0)
            {
                sume[j+v[i]]=1;
                cost[j+v[i]]=min(cost[j+v[i]],cost[j]+c[i]);
                smax=max(smax,j+v[i]);
            }
        }
    }
    int sol_c=1e9;
    while(s<=smax)
    {
        if(sume[s]!=0)
            sol_c=min(sol_c,cost[s]);
        s++;
    }
    if(sol_c==1e9)
        out<<-1;
    else
        out<<sol_c;
    return 0;
}