Pagini recente » Cod sursa (job #1398962) | Cod sursa (job #2329608) | Istoria paginii runda/simularecercazi | Votati Zaharel | Cod sursa (job #1308710)
#include <bits/stdc++.h>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
int e[1005],c[1005];
vector<int> d;
int main() {
int n,s,ss=0,m=-1;
in>>n>>s;
for(int i=1;i<=n;i++){ in>>e[i]>>c[i];ss+=e[i];m=max(m,e[i]); }
d=vector<int>(m+1);
if(s>ss){ out<<-1;return 0; }
int sol=numeric_limits<int>::max();
for(int i=1;i<=n;i++)
for(int j=m-e[i];j>=0;j--)
if(j+e[i]<s){
if(d[j+e[i]]<d[j]+c[i])
d[j+e[i]]=d[j]+c[i];
}
else sol=min(sol,d[j]+c[i]);
out<<sol;
return 0;
}