Cod sursa(job #849136)

Utilizator StefanLacheStefan Lache StefanLache Data 6 ianuarie 2013 16:05:18
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>
#include <algorithm>
#include<stdlib.h>
#include<string.h>
using namespace std;
int G, W;
int E[1001], C[1001];
int D[1001][5002];
int main()
{
    FILE *f=fopen("energii.in","rt");
    FILE *g=fopen("energii.out","wt");
    fscanf(f,"%d%d", &G, &W);
    for(int i = 1; i <= G; ++i)
        fscanf(f,"%d%d", &E[i], &C[i]);
    for(int i = 0; i < G; i++)
        for(int j = 1; j <= W; j++)
                D[i][j] = 10001;
    for(int i = 1; i <= G; ++i)
        for(int j = 0; j <= W; ++j)
            {
                    D[i][j] = D[i-1][j];
                    if(E[i] <= j)
                        D[i][j] = min(D[i][j], D[i-1][j - E[i]] + C[i]);
                        else D[i][j]=min(D[i][j],C[i]);
            }
            if(D[G][W] != 10001)
    fprintf(g,"%d\n", D[G][W]);
    else fprintf(g,"-1");
    return 0;

    }