Cod sursa(job #206063)
#include<fstream>
using namespace std;
int viz[1000];
int valo[10009];
int main(){
int G,W,i,E[1000],C[1000],maxim,imax,j,val,ok;
ifstream f("energii.in");
f>>G>>W;
for(i=0;i<G;i++)
f>>E[i]>>C[i];
f.close();
for(i=1;i<10009;i++){
maxim=0;imax=-1;
ok=0;
for(j=0;j<G;j++)
if(!viz[j]){
ok=1;
if(C[j]<=i){
val=E[j]+valo[i-C[j]];
if(val>maxim){
maxim=val;
imax=j;
}
}
if(!ok){
ofstream g("energii.out");
g<<"-1\n";
g.close();
return 0;
}
}
valo[i]=maxim;
if(maxim) viz[imax]=1;
if(valo[i]>=W){
ofstream g("energii.out");
g<<i<<'\n';
g.close();
return 0;
}
}
return 0;
}