Cod sursa(job #884688)

Utilizator simplicityFlorescu Emanuel Robert simplicity Data 21 februarie 2013 10:42:42
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream>
#include<cstdio>
#define inf 20000005
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
struct{int e;int c;
}t[2005];
int g,w,eg[1001],cg[1001],s,i,j,minim,a[2][5002];
int main()
{
 minim=inf;
 fin>>g>>w;
 for(i=1;i<=g;i++)
  fin>>eg[i]>>cg[i];
 for(i=1;i<=g;i++)
  s+=eg[i];
 if(s<w)
  fout<<-1;
 else
 {
    a[1][eg[1]]=cg[1];
    for(i=2;i<=g;i++)
        for(j=1;j<=w;j++)
            if(a[(i-1)%2][j]!=0)
                if(eg[i]+j<w)
                    if(a[i%2][eg[i]+j]!=0)
                        a[i%2][eg[i]+j]=a[(i-1)%2][eg[i]+j]>a[(i-1)%2][j]+cg[i]?a[(i-1)%2][j]+cg[i]:a[(i-1)%2][eg[i]+j];
                    else
                        a[i%2][eg[i]+j]=a[(i-1)%2][j]+cg[i];
                else
                    if(a[i%2][j]+cg[i]<minim)
                        minim=a[i%2][j]+cg[i];
    fout<<minim;
 }
return 0;
}