Cod sursa(job #2707705)

Utilizator PrizlopanIustinPrizlopan Iustin George PrizlopanIustin Data 17 februarie 2021 17:05:59
Problema Energii Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 kb

#include <cstring>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <deque>
#include <queue>
using namespace std;

int coli[]= {0,1,0,-1};
int lini[]= {-1,0,1,0};
struct bob
{
    int wg;
    int val;
} negru[5009],benis;
long long n,m,ok,s,x,y,v[3][100002],i,j,nr,aux[300][300],k,maxi,x1,x2,mini=999999;
int main()
{
    ifstream in("energii.in");
    ofstream out("energii.out");
    in>>n>>m;
    for(i=1; i<=n; i++)
    {
        in>>negru[i].val>>negru[i].wg;
        if(negru[i].wg>maxi)
            maxi=negru[i].wg;
        s+=negru[i].val;
    }
    if(s<m)
    {
       out<<-1;
        return 0;
    }
    for(i=1; i<=n; i++)
        for(j=1; j<=maxi; j++)
        {
            if(j-negru[i].wg>=0)
                if(i%2==1)
                    v[i%2][j]=max(v[0][j],v[0][j-negru[i].wg]+negru[i].val);
                else
                    v[i%2][j]=max(v[1][j],v[1][j-negru[i].wg]+negru[i].val);
            else
            {
                if(i%2==0)
                    v[i%2][j]=v[1][j];
                else
                    v[i%2][j]=v[0][j];
            }
            if(v[i%2][j]>=m)
                if(j<mini)
                    mini=j;
        }
    out<<mini;
    return 0;

}