Pagini recente » Borderou de evaluare (job #1570307) | Cod sursa (job #2351403) | Borderou de evaluare (job #1902912) | Cod sursa (job #748756) | Cod sursa (job #1902905)
#include <stdio.h>
#define NMAX 1002
#define WMAX 5002
#define MAX_VAL 11000000
typedef struct
{
char viz;
int cost;
}Element;
Element v[NMAX];
int main()
{
unsigned short int n,w,eg,cg;
FILE *f,*g;
f = fopen("energii.in", "r");
g = fopen("energii.out", "w");
fscanf(f,"%hu\n%hu", &n, &w);
for(int i = 1; i <= w; i++)
v[i].cost = MAX_VAL;
v[0].viz = 1;
for(int i = 0; i < n; i++)
{
fscanf(f, "%hu%hu", &eg, &cg);
for(int j = w; j >= 0; j--)
{
if(v[j].viz == 1)
{
if(j + eg >= w)
{
v[w].viz = 1;
if(v[j].cost + cg < v[w].cost)
v[w].cost = v[j].cost + cg;
}
else
{
v[j + eg].viz = 1;
if(v[j].cost + cg < v[j + eg].cost)
v[j + eg].cost = v[j].cost + cg;
}
}
}
}
if(v[w].viz != 1)
{
fprintf(g,"-1\n");
}
else
{
fprintf(g, "%d", v[w].cost);
}
fclose(g);
fclose(f);
return 0;
}