Pagini recente » Cod sursa (job #2525245) | Cod sursa (job #1320679) | Cod sursa (job #2575970) | Cod sursa (job #1170790) | Cod sursa (job #1093339)
#include<stdio.h>
#include<algorithm>
#define DIM 1005
#define DIM2 5005
#define INF 100000
using namespace std;
FILE *f=fopen("energii.in","r"), *g=fopen("energii.out","w");
long int n, w, E[DIM], C[DIM], a[DIM][DIM2], sE, sC;
// E[] = Energiile ; C[] = Costurile ; a[][] = PDul
// sE = suma energiilor ; sC = suma costurilor
void citire(){
long int i;
fscanf(f,"%ld\n%ld\n",&n,&w);
for(i=1;i<=n;i++){
fscanf(f,"%ld %ld\n",&E[i],&C[i]);
sE+= E[i]; sC+= C[i];
}
}
void rezolvare(){
long int i, j;
for(i=0;i<=w;i++){a[0][i]=INF;}
for(i=1;i<=n;i++){
for(j=1;j<=w;j++){
if( E[i] >= j )
a[i][j]= min(a[i-1][j], C[i]);
else
a[i][j]= min(a[i-1][j], a[i-1][ j-E[i] ]+C[i] );
}
}
fprintf(g,"%ld\n",a[n][w]);
}
int main(){
citire(); if(sE< w){fprintf(g,"-1\n"); return 0;}
rezolvare();
return 0;
}