Cod sursa(job #2366383)

Utilizator skoda888Alexandru Robert skoda888 Data 4 martie 2019 19:50:52
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda pregatire_cls12_oji Marime 0.95 kb


#include <iostream>
#include <fstream>
#include <algorithm>


const int NMAX = 1005;


struct Obiect {

	int v;
	int w;

};


Obiect Obiecte[NMAX];
int prev[5002];

int Knapsack(int N, int GMax) {

	for (int i = 1; i <= N; ++i) {

		int curr[5002] = {};
		for (int j = 1; j <= GMax; ++j) {

			if (Obiecte[i].w > j) {
				curr[j] = prev[j];
			}
			else {
				curr[j] = std::max(prev[j], prev[j - Obiecte[i].w] + Obiecte[i].v);
			}

		}

		for (int j = 1; j <= GMax; ++j) {
			prev[j] = curr[j];
		}

	}

	return prev[GMax];

}


int main() {

	std::ifstream in("energii.in");
	std::ofstream out("energii.out");

	int N, G;
	in >> N >> G;

	int SumaTotalaW = 0;
	int SumaTotalaV = 0;
	for (int i = 1; i <= N; ++i) {
		in >> Obiecte[i].w >> Obiecte[i].v;
		SumaTotalaW += Obiecte[i].w;
		SumaTotalaV += Obiecte[i].v;
	}

	out << SumaTotalaV - Knapsack(N, SumaTotalaW - G);
	

	system("PAUSE");
	return 0;
}