Pagini recente » Monitorul de evaluare | Cod sursa (job #1308001) | Cod sursa (job #1121346) | Cod sursa (job #2008995) | Cod sursa (job #583856)
Cod sursa(job #583856)
#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;
}