Cod sursa(job #2373212)

Utilizator stefan1anubystefan popa stefan1anuby Data 7 martie 2019 12:43:43
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>

using namespace std;
ifstream cin("energii.in");
ofstream cout("energii.out");
#define gmax 1001
#define wmax 5001
#define INF 9999999
int dp[wmax*3],w,n;
struct inf
{
    int cost;
    int energie;
} v[gmax];
void read()
{
    int i;
    cin>>n>>w;
    for(i=1;i<=n;i++)
    {
        cin>>v[i].energie>>v[i].cost;
    }
}
void solve()
{
    int i,j,sol=INF;
    for(i=1;i<=wmax;i++)
        dp[i]=INF;
    for(i=1;i<=n;i++)
    {
        for(j=w;j>=0;j--)
          if(dp[j]!=INF)
          {
              dp[j+v[i].energie]=min(dp[j+v[i].energie],(dp[j]+v[i].cost));
              if(dp[j+v[i].energie]>=w) sol=min(sol,dp[j+v[i].energie]);
          }
    }
    if(sol==INF) cout<<-1;
    else cout<<sol;
}
int main()
{
    read();
    solve();
    return 0;
}