Pagini recente » Cod sursa (job #3285738) | Cod sursa (job #1603328) | Cod sursa (job #2302208) | Cod sursa (job #3211244) | Cod sursa (job #2840718)
#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;
}
// eg[i]
}
vector<vector<ll>> dp(2, vector<ll>(2*w+1, INF));
dp[0][0]=0;
bool u=0;
for(int i=1;i<=n;++i){
u=!u;
dp[u][0]=0;
for(int e=1;e<=2*w;++e){
dp[u][e]=min(dp[u][e], dp[!u][e]);
int energy=min(w,eg[i]);
if(e>=energy)
dp[u][e]=min(dp[u][e], dp[!u][e-energy]+ec[i]);
}
}
for(int i=w;i<=w*2;++i)
ans=min(ans,dp[u][i]);
fout<<(ans>=INF?-1:ans);
}