Cod sursa(job #1213608)

Utilizator cojocarugabiReality cojocarugabi Data 28 iulie 2014 16:50:00
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
#include <iostream>
#include <cstring>
#include <vector>
#define infi 9999999
using namespace std;
ifstream fi("energii.in");
ofstream fo("energii.out");
const int enermax=10000;
const int wmax=5001;
long s[enermax+wmax+5];
int main()
{
    int n,w;
    fi>>n>>w;
    int x,y;
    long max;
    memset(s,infi,sizeof(s));
    s[0]=0;
    long suma=0;
    for (int i=1;i<=n;++i)
    {
        fi>>x>>y;
        suma+=x;
        for (int j=w;j>=0;--j)
          if (s[j]!=infi)
            if (s[j+x]==infi ||(s[j+x]>s[j]+y))
                s[j+x]=s[j]+y;
    }
    max=infi;
    for (int i=w;i<w+enermax;++i)
        if (max>s[i]) max=s[i];
    if (suma<w)
        max=-1;
    fo<<max<<"\n";
}