Cod sursa(job #3356249)

Utilizator YannYann Spataru Yann Data 30 mai 2026 14:08:39
Problema Energii Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>

using namespace std;
	ifstream cin("energii.in");
	ofstream cout("energii.out");
	pair<int, int> v[1002]; /// energie, cost
	pair<int, int> suma[10000001]; /// se-poate-Sau-nu, cost
int main()
{
	int g,w,pozmax;
	cin>>g>>w;
	for(int n2=1;n2<=g;n2++) {
		cin>>v[n2].first>>v[n2].second;
	}
	pozmax=v[1].first;
	for(int n2=1;n2<=15001;n2++) {
		suma[n2].second=10000001;
	}
	suma[v[1].first].first=1;
	suma[v[1].first].second=v[1].second;
	for(int n2=2;n2<=g;n2++) {
		for(int n3=pozmax;n3>=0;n3--)
			if(suma[n3].first==1/* && n3+v[n2].first<=w*/) {
				suma[n3+v[n2].first].first=1;
				suma[n3+v[n2].first].second=suma[n3].second+v[n2].second;
			}
		suma[v[n2].first].first=1;
		suma[v[n2].first].second=min(suma[v[n2].first].second, v[n2].second);
		pozmax+=v[n2].first;
	}
	int s=suma[w].second;
	for(int n2=w;n2<=pozmax;n2++)
		s=min(s,suma[n2].second);
	if(s==10000001)
		s=-1;
	/*for(int n2=1;n2<=pozmax;n2++) {
		cout<<suma[n2].first<<" "<<suma[n2].second<<'\n';
	}*/
	cout<<s;
    return 0;
}