Cod sursa(job #2501383)

Utilizator MariusblockMoga Marius-Ioan Mariusblock Data 29 noiembrie 2019 16:56:30
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include<bits/stdc++.h>

using namespace std;

ifstream fin("numere.in");
ofstream fout("numere.out");

int DP[10001];

int main(){
    int n,P,i,j,cost,en;
    fin>>n>>P;
    for(i = 0; i <= P; i++){
        DP[i] = 1;
    }
    for(i = 1 ; i <= n; i++){
        fin>>en>>cost;
        for(j = P; j >= 1; j--){
            if(DP[j] != 1){
                if(j + en >= P){
                    if(DP[P] == 1){
                        DP[P] = DP[j] - cost;
                    }else{
                        DP[P] = max(DP[P],DP[j]-cost);
                    }
                }else{
                    if(DP[j+en] == 1){
                        DP[j+en] = DP[j] - cost;
                    }else{
                        DP[j+en] = max(DP[j+en],DP[j]-cost);
                    }
                }
            }
        }
        if(DP[en] != 1)
            DP[en] = max(DP[en],-cost);
        else
            DP[en] = -cost;
    }
    if(DP[P] == 1){
        fout<<"-1"<<'\n';
    }else{
        fout<<-DP[P]<<'\n';
    }
    return 0;
}