Pagini recente » Cod sursa (job #1060302) | Cod sursa (job #751909) | Cod sursa (job #474619) | Cod sursa (job #1238686) | Cod sursa (job #1112468)
#include<fstream>
#define maxim 2000000000
#define min(a,b) (a<b?a:b)
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
int N,W,E[5005],C[5005],s[17005],solutie;
char uz[5005];
int main(){
f>>N>>W;
for(int i=1;i<=N;i++)
f>>E[i]>>C[i];
solutie=maxim;
for(int i=1;i<=17000;i++)
s[i]=maxim;
uz[0]=1;
for(int j=1;j<=N;j++)
for(int k=W;k>=0;k--)
if(uz[k]){
s[k+E[j]]=min(s[k]+C[j],s[k+E[j]]);
uz[k+E[j]]=1;
if(k+E[j]>=W)
solutie=min(solutie,s[k+E[j]]);
}
if(solutie>W)
g<<"-1"<<endl;
else
g<<solutie<<endl;
f.close();
g.close();
return 0;
}