Cod sursa(job #945264)

Utilizator addy01adrian dumitrache addy01 Data 1 mai 2013 15:48:18
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <cstdio>
using namespace std;
int best[1010][5001],energie[1010],cost[1010];
int minim(int a,int b)
{
    if(a<b)
        return a;
    return b;
}
int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    int n,s,i,j,se=0;
    cin>>n>>s;
    for(i=1;i<=n;i++)
        cin>>energie[i]>>cost[i],se+=energie[i];
        if(se<s)
        {
            cout<<-1;
            return 0;
        }
        for(i=1;i<=s;i++)
                best[0][i]=2000000000;
        for(j=1;j<=n;j++)
            best[j][0]=2000000000;

    for(i=1;i<=n;i++)
        for(j=1;j<=s;j++)
            if(energie[i]>=j)
                best[i][j]=minim(best[i-1][j],cost[i]);
            else
                best[i][j]=minim(best[i-1][j],best[i-1][j-energie[i]+cost[i]]);
int ans=0;
            for(j=s;j>=1;j--)
                if(best[n][j]>ans)
                    ans=best[n][j];
            cout<<ans;


    return 0;
}