Cod sursa(job #1277204)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 27 noiembrie 2014 12:40:33
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <fstream>
using namespace std;

ifstream fin("energii.in");
ofstream fout("energii.out");

int n, m, i, j, k, ok, minim;
pair < int , int > v[2000];
int w[100001], t[100001];

int main(){
    fin >> n >> k;
    for(i = 1; i <= n; i ++)
        fin >> v[i].first >> v[i].second;
    w[0] = 1; minim = 2000000000;
    for(i = 0; i <= k; i ++){
        if(w[i] == 1){
            for(j = 1; j <= n; j ++){
                if(w[i + v[j].first] == 0){
                    w[i + v[j].first] = 1;
                    t[i + v[j].first] = t[i] + v[j].second;
                    if(i + v[i].first >= k){
                        if(minim > t[i + v[i].first])
                            minim = t[i + v[i].first];
                    }
                }
                else
                    if(w[i + v[j].first] == 1){
                        if(t[i +v[j].first] > t[i] + v[j].second)
                            t[i +v[j].first] > t[i] + v[j].second;
                        if(i + v[i].first >= k)
                            if(minim > t[i + v[i].first])
                                minim = t[i + v[i].first];
                    }
            }
        }
    }
    fout << minim;
    return 0;
}