Pagini recente » Borderou de evaluare (job #3286711) | Cod sursa (job #250127) | Cod sursa (job #3231724) | Cod sursa (job #3237523) | Cod sursa (job #2411661)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
const int inf = 1<<30;
int v[1000006];
int auxv[1000006];
int gc[10005];
int ge[10005];
int main()
{
int n,m,i,j,sum = 0,minim = inf;
fin>>n>>m;
for(i = 1; i <= n; i++){
fin>>gc[i]>>ge[i];
sum+=gc[i];
v[i] = auxv[i] = inf;
}
for(i = n; i <= sum; i++){
v[i] = auxv[i] = inf;
}
if(sum < m){
fout<<"-1"<<endl;
return 0;
}
for(i = 1; i <= n; i++){
for(j = sum; j >= 1; j--){
if(j < gc[i]){
v[j] = v[j];
}else{
v[j] = min(v[j],v[j-gc[i]] + ge[i]);
}
if(j >= m){
minim = min(minim,v[j]);
}
}
}
fout<<minim<<endl;
return 0;
}