Cod sursa(job #2047970)

Utilizator mariaBmaria blaj mariaB Data 25 octombrie 2017 17:45:14
Problema Energii Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <vector>
#define  INF 1000000000
using namespace std;
int dp[1005][5005];
vector<pair<int,int>>v;
int main()
{
    ifstream cin("energii.in");
    ofstream cout("energii.out");
    int n,i,w,j;
    cin>>n>>w;
    v.resize(n+1);
    for(i=1;i<=n;i++){
        cin>>v[i].first>>v[i].second;
    }
    for(i=1;i<=v[1].first;i++)
        dp[1][i]=v[i].second;
    for(i=v[1].first+1;i<=w;i++)
        dp[1][i]=INF;
    for(i=2;i<=n;i++){
        for(j=1;j<=w;j++){
            dp[i][j]=dp[i-1][j];
            if(j>=v[i].first){
               dp[i][j]=min(dp[i][j],dp[i-1][j-v[i].first]+v[i].second);
            }
            else{
               dp[i][j]=min(dp[i][j],v[i].second);
            }
        }
    }
    cout<<dp[n][w];
    return 0;
}