Cod sursa(job #2980770)

Utilizator eduardbuchmaneduardbuchman eduardbuchman Data 16 februarie 2023 20:01:18
Problema Energii Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>

using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
struct str
{
    int pr,cs;
}a[1001];
int s[15001];
int main()
{
    int n,w,maxi=0;
    in>>n>>w;
    for(int i=1;i<=n;i++)
    {
        in>>a[i].pr>>a[i].cs;
        maxi=max(maxi,a[i].pr);
    }
    int pmax=w+maxi;
    for(int i=1;i<=pmax;i++)
    {
        s[i]=100000000;
    }
    s[a[1].pr]=a[1].cs;
    int k=a[1].pr;
    for(int i=2;i<=n;i++)
    {
        for(int j=k;j>=1;j--)
        {
            if(s[j]!=0)
                if(j+a[i].pr<=pmax)
                {
                    s[j+a[i].pr]=min(s[j+a[i].pr],s[j]+a[i].cs);
                }
        }
        s[a[i].pr]=min(s[a[i].pr],a[i].cs);
        if(k+a[i].pr<=pmax)k+=a[i].pr;
        else k=pmax;
    }
    int minn=100000000;
    for(int i=w;i<=pmax;i++)
    {
        if(s[i]!=0)minn=min(minn,s[i]);
    }
    if(minn==100000000)out<<-1;
    else out<<minn;
    return 0;
}