Cod sursa(job #3200404)

Utilizator cacamaca12aasdga cacamaca12 Data 4 februarie 2024 16:07:28
Problema Energii Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>

using namespace std;
ifstream cin("energii.in");
ofstream cout("energii.out");

int n,pmin,gmax,pt;
int p[1003],g[1003];
int mat[1003][5003];

int main()
{
    cin>>n>>pmin;
    
    for(int i=1;i<=n;++i){
        cin>>p[i]>>g[i];
        gmax+=g[i];   
        pt+=p[i];
    }
    
    if(pt<pmin){
        cout<<-1;
        exit(0);
    } 
    
    int gminim=1000000000,rez=0;
    
    for(int i=1;i<=n;++i)
        for(int gc=0;gc<=gmax;++gc){
            mat[i][gc]=mat[i-1][gc];
            
            if(gc>=g[i])
                mat[i][gc]=max(mat[i][gc],p[i]+mat[i-1][gc-g[i]]);
            
            if(mat[i][gc]>=pmin){
                if(rez==0){
                    rez=mat[i][gc];
                    gminim=gc;
                }else if(gc<gminim) gminim=gc;
                gc=gmax+1;
            }
        }
    cout<<gminim;
    return 0;
}