Pagini recente » Cod sursa (job #171340) | Istoria paginii runda/simulare-5-7/clasament | Cod sursa (job #1574490) | Cod sursa (job #1900669) | Cod sursa (job #130191)
Cod sursa(job #130191)
#include<cstdio>
#include<cstring>
using namespace std;
#define FIN "energii.in"
#define FOUT "energii.out"
#define MAX_N 10005
#define INF 0x3f3f3f3f
int G, W, i;
int A[MAX_N];
int E[MAX_N];
int C[MAX_N];
void ks()
{
int i, j;
int BEST = INF;
memset (A, INF, sizeof (A));
A[0] = 0;
for(i = 1; i <= G; ++i)
for(j = W; j >= 0; --j)
if(A[j] < INF)
{
if(W <= j + E[i] && A[j] + C[i] < BEST) BEST = A[j] + C[i];
if(j + E[i] < W && A[j] + C[i] < A[j + E[i]]) A[j + E[i]] = A[j] + C[i];
}
if (BEST != INF) printf ("%d\n", BEST); else printf ("-1\n");
}
int main()
{
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
scanf("%d %d", &G, &W);
for(i = 1; i <= G; ++i)
scanf("%d %d",E + i, C + i);
ks();
return 0;
}