Cod sursa(job #2529901)

Utilizator memecoinMeme Coin memecoin Data 24 ianuarie 2020 09:49:46
Problema Energii Scor 45
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <string>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <math.h>
#include <set>
#include <map>
#include <string.h>
#include <queue>

using namespace std;

#ifdef DEBUG
string name = "data";
#else
string name = "energii";
#endif

ifstream fin(name + ".in");
ofstream fout(name + ".out");

int n, w;

#define MAXN 1005
#define INF 0x3f3f3f3f

int v[MAXN];
int c[MAXN];

int cache[5005][MAXN];

int solve(int w, int i) {

    if (w <= 0) {
        return 0;
    }
    
    if (i >= n) {
        return INF;
    }
    
    if (cache[w][i] != 0) {
        return cache[w][i];
    }
    
    int sol = min(c[i] + solve(w - v[i], i + 1), solve(w, i + 1));
    
    cache[w][i] = sol;
    
    return sol;
}

int main() {
    
    fin >> n >> w;
    
    for (int i = 0; i < n; ++i) {
        fin >> v[i];
        fin >> c[i];
    }
    
    int sol = solve(w, 0);
    
    if (sol == INF) {
        fout << -1;
    } else {
        fout << sol;
    }

    return 0;
}