Cod sursa(job #952671)

Utilizator primulDarie Sergiu primul Data 23 mai 2013 19:47:25
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
using namespace std;
fstream in("energii.in",ios::in),out("energii.out",ios::out);
 
const int G=1010;
const int INF = 2147000000,N=15001;
 
struct gen{
    int e,c;
}r[G],maxx;
 
int g,w,cmin[N];
long long s,c;
int main()
{
    in>>g>>w;
    for( int i=1 ; i<=g ; i++ ){
        in>>r[i].e>>r[i].c;
        s+=r[i].e;
        c+=r[i].c;
    }
    if(s<w){
        out<<-1;
        return 0;
    }
    if(s==w){
        out<<c;
        return 0;
    }
    cmin[0]=0;
    for( int i=1 ; i<N ; i++)
        cmin[i]=INF;
    for( int i=1 ; i<=g ; i++ ){
        for(int j=w ; j>=0 ; j--){
            if(cmin[j]!=INF && cmin[j] + r[i].c < cmin[j+r[i].e])
                cmin[r[i].e+j]=cmin[j] + r[i].c ;
        }
    }
    int minn=cmin[w];
    for( int i=w+1 ; i<N ; i++)
        if(cmin[i]<minn) minn=cmin[i];
    out<<minn;
    return 0;
}