Pagini recente » Cod sursa (job #348423) | Cod sursa (job #193474) | Cod sursa (job #2451582) | Cod sursa (job #3229841) | Cod sursa (job #19190)
Cod sursa(job #19190)
/*#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 10000000
int main()
{
int u[MAXW], v[MAXW];
//int *a0 = new int(MAXW), *a1 = new int(MAXW), *aux;
int *a0 = u, *a1 = v, *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\n");
else printf("%d\n", a0[w]);
getch();
return 0;
}
#endif