Pagini recente » Cod sursa (job #2942798) | Cod sursa (job #2069385) | Cod sursa (job #1235595) | Cod sursa (job #1623706) | Cod sursa (job #1100037)
#include <iostream>
#include <cstdio>
using namespace std;
FILE *f, *g;
int G, W, ene[1001], cost[1001], C[1001][5001], inf;
void Citire()
{
int i;
fscanf(f, "%d%d", &G, &W);
for(i=1; i<=G; i++)
fscanf(f, "%d%d", &ene[i], &cost[i]);
}
void Initializare()
{
int i, j;
inf=2000000000;
for(i=0; i<=W; i++)
C[0][i]=inf;
for(i=0; i<=G; i++)
C[i][0]=inf;
}
void Sol()
{
int i, j;
for(i=1; i<=G; i++)
for(j=1; j<=W; j++)
if(ene[i]>=j)
C[i][j]=min(cost[i], C[i-1][j]);
else
C[i][j]=min(C[i-1][j], cost[i]+C[i-1][j-ene[j]]);
if(C[G][W]==inf)
C[G][W]=-1;
}
void Afisare()
{
fprintf(g, "%d", C[G][W]);
}
int main()
{
f=fopen("energii.in", "r");
g=fopen("energii.out", "w");
Citire();
Initializare();
Sol();
Afisare();
fclose(f);
fclose(g);
return 0;
}