Pagini recente » Cod sursa (job #1710224) | Cod sursa (job #1856027) | Cod sursa (job #94333) | Cod sursa (job #2668693) | Cod sursa (job #917344)
Cod sursa(job #917344)
#include <iostream>
#include <fstream>
using namespace std;
#define Nmax 11000000
unsigned long long G, W, S;
int E[1002], C[1002], cost[Nmax];
bool format[Nmax];
unsigned long long minim = Nmax;
void citire(){
ifstream f("energii.in");
f >> G >> W;
for(int i = 1; i <= G; i++)
f >> E[i] >> C[i],
S += E[i];
f.close();
}
void dinamica(){
unsigned long long maxim = 0;
format[0] = 1;
for(int i = 1; i <= G; i++){
for(int j = maxim; j >= 0; j--)
if(format[j]){
format[j+E[i]] = 1;
if(cost[j] + C[i] < cost[j+E[i]] || cost[j+E[i]] == 0)
cost[j+E[i]] = cost[j] + C[i];
if(j+E[i] >= W && cost[j+E[i]] < minim)
minim = cost[j+E[i]];
}
if(cost[maxim] + C[i] <= minim)
maxim += E[i];
}
}
void afis(){
ofstream g("energii.out");
//if(W > S)
g << -1 << "\n";
//else{
// dinamica();
// g << (minim == Nmax ? -1 : minim) << "\n";
//}
}
int main(){
citire();
afis();
return 0;
}