Pagini recente » Cod sursa (job #989761) | Cod sursa (job #2246546) | Cod sursa (job #3274493) | Cod sursa (job #868707) | Cod sursa (job #19166)
Cod sursa(job #19166)
/*#include "stdafx.h"
#include "infoarena.h"
#include <conio.h>/**/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define _TEMPLATE_
#ifdef _TEMPLATE_
#ifndef _INC_CONIO
void clrscr()
{
freopen("energii.out", "w", stdout);
}
void getch() {}
#else
void clrscr() {}
#endif
#define repf(i,a,b) for(i=a;i<b;i++)
#define rep(i,n) repf(i,0,n)
#define min(a,b) (((a) < (b)) ? (a) : (b))
#define MAXG 1001
#define MAXW 5001
#define INF 10000
int main()
{
int *a0 = new int(MAXW), *a1 = new int(MAXW), *aux;
int c[MAXG], e[MAXG];
int g,w;
int i,j;
clrscr();
FILE *fin = fopen("energii.in", "r");
fscanf(fin,"%d\n%d\n", &g, &w);
rep(i, g) fscanf(fin,"%d %d\n", &e[i], &c[i]);
for(i = 1; i <= e[0]; i++) a0[i] = c[0];
for(; i <= w; i++) a0[i] = INF;
for(j = 1; j < g; j++)
{
for(i = 1; i <= e[j]; i++)
a1[i] = min(c[j], a0[i]);
for(; i <= w; i++)
a1[i] = min(a0[i-e[j]] + c[j], a0[i]);
aux = a1; a1 = a0; a0 = aux;
}
if (a0[w] >= INF) printf("-1");
else printf("%d", a0[w]);
getch();
return 0;
}
#endif