Pagini recente » Cod sursa (job #675815) | Cod sursa (job #487906) | Cod sursa (job #1550825) | Cod sursa (job #2150588) | Cod sursa (job #2209331)
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int value[1002];
int cost[1002];
int arr[1002][5002];
int costMin(int n,int c){
int result;
if(arr[n][c] != -2)
result = arr[n][c];
else if(n==0 || c==0)
result=0;
else if(cost[n]>c){
result=costMin(n-1,c);
} else {
int tmp1 = costMin(n-1, c);
int tmp2 = value[n]+costMin(n-1, c-cost[n]);
result = max(tmp1,tmp2);
arr[n][c] = result;
}
return result;
}
int main() {
freopen("energii.in", "r", stdin);
freopen("energii.out", "w", stdout);
memset(arr,-2,sizeof(arr[0][0])*1002*5002);
int numarGeneratoare, costRepornire;
scanf("%i", &numarGeneratoare);
scanf("%i", &costRepornire);
for(int i = 1; i <= numarGeneratoare; i++){
scanf("%i", &cost[i]);
scanf("%i", &value[i]);
}
int result = costMin(numarGeneratoare,costRepornire);
if(result >= costRepornire)
printf("%i",result);
else
printf("-1");
return 0;
}