Cod sursa(job #583861)

Utilizator stef93Stefan Gilca stef93 Data 22 aprilie 2011 23:20:19
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
int g[10200][2],m[50200];
bool u[5503][5503];
int G,W;

int main()
{
    int i,k,j,s=0,mx;
    in>>G>>W;
    for(i=0;i<G;i++)
                    in>>g[i][0]>>g[i][1],s+=g[i][0];
    in.close();
    if(s<W){out<<-1<<'\n';return 0;}
    else{
    m[0]=1;
    for(i=0;i<G;i++)
    {
                     for(j=W;j>=0;j--)
                     if (m[j] && ((g[i][1]+m[j]<m[j+g[i][0]])||(m[j+g[i][0]]==0))) 
                     m[j+g[i][0]]=g[i][1]+m[j]; 

    }
    mx=m[W];    
    for (i=W+1;i<=s;i++)         
    if ( m[i]<mx && m[i] ) mx=m[i];
    out<<mx-1<<'\n';}
    out.close();
    return 0;
}