Cod sursa(job #3230131)

Utilizator vladsoartavlad sofronea vladsoarta Data 19 mai 2024 12:31:21
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#include <algorithm>
#define int unsigned int
using namespace std;
ifstream cin("energii.in");
ofstream cout("energii.out");

struct ceva{
int c,e;
}gen[1001];

int dp[2][10020],n,lim,i;

int32_t main()
{
    cin>>n>>lim;
    for(i=1;i<=n;i++)
        cin>>gen[i].e>>gen[i].c;
    for(i=0;i<=1;i++)
        for(int curr_c=1;curr_c<=lim*2;curr_c++)
            dp[i][curr_c]=2e9;
    for(i=1;i<=n;i++)
    {
        for(int curr_c=1;curr_c<=lim+1;curr_c++)
        {
            dp[i%2][curr_c]=dp[(i-1)%2][curr_c];
            if(gen[i].c<=curr_c)
                dp[i%2][curr_c]=min(dp[i%2][curr_c],dp[(i-1)%2][curr_c-gen[i].c]+gen[i].e);
            //dp[i%2][curr_c]=min(dp[i%2][curr_c],gen[i].e);
        }
    }
    int minim=2e9+1,rsp_poz=0;
    for(i=lim;i<=2*lim;i++)
        if(dp[n%2][i]!=2e9&&dp[n%2][i]<minim)
            rsp_poz=i,minim=dp[n%2][i];
    cout<<rsp_poz;
    return 0;
}