Cod sursa(job #2761067)

Utilizator tryharderulbrebenel mihnea stefan tryharderul Data 30 iunie 2021 13:29:18
Problema Energii Scor 55
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;

int n, w;

struct elem{
    int e,c;
}v[1003];

long long dp[1003][5003];

int main() {
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);

    scanf("%d %d", &n, &w);
    for (int i = 1; i <= n; i++) {
        scanf("%d %d",&v[i].e,&v[i].c);
    }
    for(int i=0;i<=n;i++){
        for(int j=1;j<=w;j++)
            dp[i][j] = INT_MAX;
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= w; j++) {
            int poz = j-v[i].e;
            if(poz < 0)poz = 0;
            dp[i][j] = min(dp[i-1][j],dp[i-1][poz] + v[i].c );
        }
    }
    if(dp[n][w] == INT_MAX)printf("-1");
    else printf("%lli\n",dp[n][w] );

    return 0;
}