Cod sursa(job #996698)

Utilizator sebinechitasebi nechita sebinechita Data 12 septembrie 2013 15:21:03
Problema Energii Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
#include <climits>
#include <algorithm>
#include <cmath>
using namespace std;

ifstream fin ("energii.in" );
ofstream fout("energii.out");
#define baza 1
#define MAX 2000004
#define MOD 9973
typedef long long int lli;


int n,t,s,i,g,a[5002], b[5002], j, d[1002], v[1002], sd[1002];

int main()
{
    fin>>n;
    fin>>g;
    for(i=1;i<=n;i++)
    {
        fin>>d[i]>>v[i];
        sd[i]=sd[i-1]+d[i];
    }

    for(i=1;i<=n;i++)
    {
        for(j=0;j<=g;j++)
        {
            if(j>sd[i])
            {
                b[j]=0;
            }
            else if(a[j]==0)
            {
                if(d[i]<j)
                {
                    b[j]=v[i]+a[j-d[i]];
                }
                else
                {
                    b[j]=v[i];
                }
            }
            else
            {
                if(d[i]<j)
                {
                    b[j]=min(v[i]+a[j-d[i]], a[j]);
                }
                else
                {
                    b[j]=min(v[i], a[j]);
                }
            }

        }
        for(j=0;j<=g;j++)
        {
            a[j]=b[j];
        }
    }
    fout<<a[g];


    return 0;
}