Cod sursa(job #2980760)

Utilizator eduardbuchmaneduardbuchman eduardbuchman Data 16 februarie 2023 19:55:21
Problema Energii Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 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;
    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)
                {
                    if(s[j+a[i].pr]!=0)s[j+a[i].pr]=min(s[j+a[i].pr],s[j]+a[i].cs);
                    else s[j+a[i].pr]=s[j]+a[i].cs;
                }
        }
        if(s[a[i].pr]!=0)s[a[i].pr]=min(s[a[i].pr],a[i].cs);
        else 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;
}