Pagini recente » Cod sursa (job #1718703) | Cod sursa (job #2669752) | Cod sursa (job #2203345) | Cod sursa (job #2035184) | Cod sursa (job #933567)
Cod sursa(job #933567)
#include<cstdio>
using namespace std;
FILE *in,*out;
const int N = 1010;
int P[N],dim[N*6],C[N];
int main(){
in=fopen("energii.in","r");
out=fopen("energii.out","w");
int n,W;
fscanf(in,"%d%d",&n,&W);
for(int i=1;i<=n;++i) fscanf(in,"%d%d",&P[i],&C[i]);
for(int i=0;i<=W;++i) dim[i]=N*6;
for(int i=1;i<=n;++i){
for(int j=W-P[i]; j>=1; --j){
if(dim[j])
if(dim[j+P[i]]>dim[j]+C[i] || dim[j+P[i]]==0)
dim[j+P[i]]=dim[j]+C[i];
}
if(P[i]<=W && C[i]<dim[P[i]])
dim[P[i]]=C[i];
}
if(dim[W]==N*6)
fprintf(out,"-1");
else fprintf(out,"%d",dim[W]);
return 0;
}