Cod sursa(job #2361972)

Utilizator EdgeLordXDOvidiuPita EdgeLordXD Data 2 martie 2019 20:54:35
Problema Energii Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <bits/stdc++.h>
#define f first
#define s second
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
pair<int,int> a[1001];
int dp[1001][5001];
int main(){
    int n,w,i,j,sum=0,sum2=0;
    bool b=0;
	in>>n>>w;
    for(i=1; i<=n; ++i){
        in>>a[i].f>>a[i].s;
        sum+=a[i].f;
        sum2+=a[i].s;
    }
    if(sum<w){
        out<<-1;
        return 0;
    }
    for(i=1; i<=n; ++i, b=!b){
        for(j=sum-w; j>=0; --j){
            dp[b][j]=dp[!b][j];
            if(sum-j-w>=a[i].f)
                dp[b][j]=max(dp[b][j], dp[!b][j+a[i].f]+a[i].s);
        }
    }
    out<<sum2-dp[!b][0];
    return 0;
}