Cod sursa(job #2496890)

Utilizator HumikoPostu Alexandru Humiko Data 21 noiembrie 2019 20:05:19
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <algorithm>
#include <stack>
#include <queue>
#include <deque>
#include <vector>
#include <string>
#include <set>
#include <map>
#include <cstring>

using namespace std;

//#include <iostream>
#include <fstream>

//ifstream cin ("input.in");
//ofstream cout ("output.out");

ifstream cin ("energii.in");
ofstream cout ("energii.out");

static const int NMAX = 5e3+5;
static const int ENMAX = 1e7+5;

int dp[NMAX];
pair <int, int> gen[ENMAX];

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);

	int n, w;
	cin>>n>>w;

	int total = 0;

	for ( int i = 1; i <= n; ++i ) {
		cin>>gen[i].first>>gen[i].second;
		total += gen[i].first;
	}

	if ( total < w ) {
		cout<<-1<<'\n';
	}

	for ( int i = 1; i <= w; ++i ) {
		dp[i] = 1e9;
	}

	for ( int i = 1; i <=  n; ++i ) {
		for ( int j = w; j >= 0; --j ) {
			int k = min(j+gen[i].first, w);
			dp[k] = min(dp[k], dp[j] + gen[i].second);
		}
	}

	cout<<dp[w]<<'\n';
}