Cod sursa(job #739674)

Utilizator padreatiAurelian Tutuianu padreati Data 23 aprilie 2012 17:47:04
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <stack>
#include <cstdlib>
#include <vector>
#include <algorithm>
#include <string.h>

using namespace std;

#define INPUT "in.txt"
#define IN "energii.in"
#define OUT "energii.out"

#define MAX 5000

int n, t;

void sol() {
    scanf("%d %d", &n, &t);
    int len = min(t, MAX);
    int* cost = (int*) malloc((len + 1) * sizeof (int));
    for(int i=0; i<=len; i++) {
        cost[i]=-1;
    }
    cost[0]=0;
    
    for(int i=0; i<n; i++) {
        int e, c;
        scanf("%d %d", &e, &c);
        for (int i = len-1; i >=0; i--) {
            if(cost[i] != -1) {
                int next = min(len, i+e);
                cost[next]=cost[next]==-1 ? cost[i]+c : min(cost[next],cost[i]+c);
            }
        }
    }
    printf("%d", cost[len]);
}

int main() {
#ifdef PADREATI
    freopen(INPUT, "r", stdin);
#else
    freopen(IN, "r", stdin);
    freopen(OUT, "w", stdout);
#endif
    sol();
    return 0;
}