Pagini recente » Cod sursa (job #2326192) | Cod sursa (job #2210154) | Cod sursa (job #838520) | Cod sursa (job #1291037) | Cod sursa (job #260198)
Cod sursa(job #260198)
#include<stdio.h>
FILE *f1,*f2;
long a,b,cc,d,i,j,k,n,w,g,et[1024][5005],e[1024],c[1024];
int main(){
f1=fopen("energii.in","r");
f2=fopen("energii.out","w");
fscanf(f1,"%ld%ld",&g,&w);
for(i=1;i<=g;i++){
fscanf(f1,"%ld%ld",&e[i],&c[i]);
et[0][e[i]]=1;
et[1][e[i]]=c[i];
et[2][e[i]]=i;
}
for(i=3;i<=1002;i++){
for(j=1;j<=g;j++){
if(i-e[j]>0){
if(et[0][i-e[j]]){
cc=et[1][i-e[j]]+c[j];
if(cc<et[1][i]||!et[0][i]){
a=1;
k=2;
while(et[k][i-e[j]]&&a){
if(e[et[k][i-e[j]]]==e[j]){
a=0;
}
k++;
}
if(a){
et[0][i]=1;
et[1][i]=cc;
et[2][i]=j;
k=2;
while(et[k][i-e[j]]){
et[k+1][i]=et[k][i-e[j]];
k++;
}
}
}
}
}
}
}
a=0;
cc=2000000000;
for(i=1002;i>=w;i--){
if(et[0][i]&&et[1][i]<cc){
a=1;
b=i;
cc=et[1][i];
}
}
if(a){
fprintf(f2,"%ld\n",et[1][b]);
}
else{
fprintf(f2,"-1\n");
}
return 0;
}