Cod sursa(job #2828601)

Utilizator MilitaruMihaiMihaiMIlitaru MilitaruMihai Data 7 ianuarie 2022 17:30:22
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int n,vmin,s,i,p[1001],v[1001],a[1001],b[1001],k,mn,j;
int main()
{
    fin>>n>>vmin;
    s=0;
    for (i=1; i<=n; i++)
    {
        fin>>p[i]>>v[i];
        s=s+p[i];
    }
    if (s<vmin) fout<<-1;
    else if (s==vmin)
    {
        k=0;
        for (i=1;i<=n;i++)
            k=k+v[i];
        fout<<k;
    }
    else
    {
        mn=s;
        for (i=1;i<=n;i++)
            a[i]=-1;
        for (i=1;i<=n;i++)
        {
            for (j=1;j<=vmin;j++)
            {
                b[j]=a[j];
                if (j-p[i]>0 && a[j-p[i]]!=-1)
                {
                    b[j]=min(b[j],b[j-p[i]]+v[i]);
                }
                else if (j-p[i]<=0 && b[j-p[i]]+v[i]>=vmin)
                    if (b[j-p[i]]+v[i]<mn) mn=b[j-p[i]]+v[i];
            }
            for (k=1;k<=vmin;k++)
                a[k]=b[k];
        }
        fout<<mn;
    }
    return 0;
}