Pagini recente » Cod sursa (job #522782) | Cod sursa (job #3270337) | Cod sursa (job #2581803) | Cod sursa (job #1820508) | Cod sursa (job #1752737)
//
// main.cpp
// Energii
//
// Created by Albastroiu Radu on 9/4/16.
// Copyright © 2016 Albastroiu Radu. All rights reserved.
//
#include <iostream>
#include <fstream>
#include <algorithm>
#include <unordered_map>
#include <vector>
#define MULTFOARTEMULT (1<<30)-1
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int i,j,nr_of_gen, min_power, power, cost, cost_total[10001], Min_cost;
// first power, second cost;
vector<int> points;
unordered_map<int,int> cost_for_power;
int main()
{
fin>>nr_of_gen>>min_power;
for(i=1;i<=nr_of_gen;i++)
{
fin>>power>>cost;
for(auto &element:points)
{
if(element<min_power)
{
if(cost_total[element+power])
{
if(cost_total[element+power] > cost_for_power[element]+cost)
{
int x = cost_for_power[element]+cost;
cost_for_power[element+power] = x;
cost_total[element+power] = x;
}
}
else
{
int x = cost_for_power[element]+cost;
cost_for_power[element+power] = x;
cost_total[element+power] = x;
points.push_back(element+power);
}
}
}
if(cost_total[power])
{
if(cost_total[power] > cost)
{
cost_for_power[power] = cost;
cost_total[power] = cost;
}
}
else
{
cost_for_power[power] = cost;
cost_total[power] = cost;
points.push_back(power);
}
}
Min_cost = MULTFOARTEMULT-1;
for(i=min_power;i<=10000;i++)
{
if(cost_total[i])
{
Min_cost = min(Min_cost, cost_total[i]);
}
}
if(Min_cost!=MULTFOARTEMULT-1)
fout<<Min_cost;
else
fout<<-1;
return 0;
}