Cod sursa(job #1778826)

Utilizator Twonk32Georgescu Cadence Twonk32 Data 14 octombrie 2016 10:36:50
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <stdio.h>
using namespace std;

long long Target[5001]; //1 -> 1000
int Load, Goal;
int Cap, Cost; //query

int main() {
    freopen ("energii.in", "r", stdin);
    freopen ("energii.out", "w", stdout);
    cin >> Load >> Goal;

    for (int i = 1; i <= Load; i++) {
        cin >> Cap >> Cost;

        if (Cap >= Goal)
            Cap = Goal;

        for (int i = Goal - 1; i >= Goal - Cap; i--)
            if (Target[i] != 0 && ((Target[i] + Cost < Target[Goal]) || Target[Goal] == 0))
                Target[Goal] = Target[i] + Cost;

        for (int i = Goal - Cap - 1; i >= 1; i--)
            if (Target[i] != 0 && ((Target[i] + Cost < Target[i + Cap]) || Target[i + Cap] == 0))
                Target[i + Cap] = Target[i] + Cost;

        if (Target[Cap] == 0 || Target[Cap] > Cost)
            Target[Cap] = Cost;
    }

    if (Target[Goal] == 0)
        cout << -1;
    else
        cout << Target[Goal];
}