Cod sursa(job #996714)

Utilizator sebinechitasebi nechita sebinechita Data 12 septembrie 2013 15:41:44
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 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, b[5002], j, d[1002], v[1002], sd[1002];

int main()
{
    int a[5002]={-1};
    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<=g;i++)
    {
        a[i]=-1;
    }

    for(i=1;i<=n;i++)
    {
        for(j=0;j<=g;j++)
        {
            if(j>sd[i])
            {
                b[j]=-1;
            }
            else if(a[j]==-1)
            {
                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;
}