Pagini recente » Cod sursa (job #923937) | Cod sursa (job #1429336) | Cod sursa (job #223151) | Istoria paginii runda/cinesetrezestededimineatadoarmeputin/clasament | Cod sursa (job #2840687)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
#define ll int
const ll INF=1e9;
int main(){
int n,w;
fin >>n >>w;
ll ans=INF;
vector<int> eg(n+1, 0), ec(n+1,0);
for(int i=1;i<=n;++i){
fin>>eg[i]>>ec[i];
if(eg[i]>=w){
ans=min((ll)ec[i], ans);
--i;
--n;
}
}
vector<vector<ll>> dp(n+1, vector<ll>(5003, INF));
for(int i=1;i<=n;++i){
dp[i][eg[i]]=ec[i];
for(int e=0;e<=w;++e){
dp[i][e]=min({
dp[i][e],
dp[i-1][e],
(e>=eg[i]?dp[i-1][e-eg[i]]+ec[i]:INF)
});
}
}
for(int i=w;i<=5000;++i)
ans=min(ans,dp[n][i]);
fout<<(ans==INF?-1:ans);
}