Cod sursa(job #1739626)

Utilizator leraValeria lera Data 9 august 2016 21:46:32
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
#define NMAX 100000
long long d[5002];
int minn(int a,int b,int c)
{
    if(a>=b && a>=c)
        return a;
    if(b>=a && b>=c)
        return b;
    if(c>=a && c>=b)
    return c;

}
int main()
{
    int G,W,i,w;
    pair<int,int>p[1002];
    fin>>G>>W;//Generatoare,energia necesara
    for(i=1;i<=G;i++)
        fin>>p[i].first>>p[i].second;//energia,costul
    for(i=1;i<=G;i++)
        for(w=W;w>=1;w--)
            if(w>=p[i].first)
                {
                    if(d[w+1]!=0 && d[w+1]<d[w])
                        d[w]=d[w+1];
                    if(d[w]<d[w-p[i].first]+p[i].second && d[w-p[i].first]+p[i].second!=0)
                        d[w]=d[w-p[i].first]+p[i].second;
                }
            else
                {
                    if(d[w+1]<d[w] && d[w+1]!=0)
                    d[w]=d[w+1];
                }
    fout<<d[W];
    return 0;
}