Cod sursa(job #2168885)

Utilizator Digori04Digori Parascovia Digori04 Data 14 martie 2018 12:39:42
Problema Energii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <bits/stdc++.h>
 
using namespace std;
 
const int inf=1e9;
int N,G,W[100000],P[100000],DP[2][10000];
bool u=1;
int main(){
     
    ifstream cin("energii.in");
    ofstream cout("energii.out");
    cin >>N>>G;
    for (int i=1;i<=N;i++) cin >>W[i]>>P[i];
     
    for (int i=1;i<=G;i++) DP[0][i]=inf;
    for (int i=1;i<=N;i++,u=!u){
        DP[u][0]=inf;
        DP[!u][0]=inf;
         
        for (int j=1;j<=G;j++){
            if (W[i]<=j && DP[!u][j]<DP[!u][j-W[i]]+P[i]) DP[u][j]=DP[!u][j];
            else DP[u][j]=DP[!u][j-W[i]]+P[i];
             
        }
         
    }
    if (DP[!u][G]==inf) cout <<-1;
    else cout <<DP[!u][G];
}