Cod sursa(job #583856)

Utilizator stef93Stefan Gilca stef93 Data 22 aprilie 2011 23:08:43
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <iostream>
#include <string.h>
#define oo 0x3f3f3f3f
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
int g[1003][2],m[5003];
bool u[1003][1003];
int G,W;

int main()
{
    int i,k,j;
    in>>G>>W;
    for(i=0;i<G;i++)
                    in>>g[i][0]>>g[i][1];
    in.close();
    memset(m,oo,sizeof(m));
    m[0]=0;
    for(i=1;i<=W;i++)
    {
                     for(j=0;j<G;j++)
                     if((m[i-g[j][0]]!=oo) && (u[i-g[j][0]][j]==false)){
                     if(m[i]>m[i-g[j][0]]+g[j][1])
                     {
                                                  m[i]=m[i-g[j][0]]+g[j][1];
                                                  for(k=0;k<G;k++)
                                                  u[i][k]=u[i-g[j][0]][k];
                                                  u[i][j]=true;
                     }}
    }
    if(m[W]!=oo)out<<m[W]<<'\n';
    else out<<-1<<'\n';
    out.close();
    return 0;
}