Pagini recente » Cod sursa (job #3171105) | Cod sursa (job #1260913) | Cod sursa (job #2573250) | Cod sursa (job #605656) | Cod sursa (job #1718586)
#include <algorithm>
#include <climits>
#include <cstdio>
using namespace std;
FILE *f, *g;
bool cmp(float a, float b)
{
if(a > b)
return true;
return false;
}
int n, i, c[1002], gr[1002], gMax = 100000;
int cMax[100001], uz[100001][1002];
int minCost = INT_MAX, s;
int j,k ;
int main()
{
f = fopen("energii.in", "r");
fscanf(f, "%d%d", &n, &s);
for(i = 1; i <= n ;i ++)
fscanf(f, "%d%d", & c[i], & gr[i]);
fclose(f);
for(j = 1; j <= gMax; j ++)
cMax[j] = -1;
cMax[0] = 0;
for(j = 1; j <= gMax; j ++)
for(i = 1; i <= n; i ++)
{
if(cMax[j - gr[i]] != -1 && !uz[j - gr[i]][i])
{
if(cMax[j] < c[i] + cMax[j - gr[i]])
{
cMax[j] = c[i] + cMax[j - gr[i]];
for(k = 1; k <= n; k ++)
uz[j][k] = uz[j - gr[i]][k];
uz[j][i] = 1;
}
}
}
int aux;
for(i = 1; i <= gMax; i ++)
{//printf("%d %d\n", cMax[i], minCost);
if(cMax[i] > 0 && cMax[i] >= s && cMax[i] < minCost)
minCost = cMax[i],aux = i;
}
if(minCost == INT_MAX)
minCost = -1, aux = -1;
g = fopen("energii.out", "w");
fprintf(g, "%d", aux);
fclose(g);
return 0;
}