Pagini recente » Cod sursa (job #2135488) | Cod sursa (job #1336158) | Cod sursa (job #22263) | Cod sursa (job #224539) | Cod sursa (job #2362153)
#include <bits/stdc++.h>
#define f first
#define s second
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
pair<int,int> a[1001];
int dp[2][5001];
int main(){
int n,w,i,j,sum=0;
bool b=0;
in>>n>>w;
for(i=1; i<=n; ++i){
in>>a[i].f>>a[i].s;
sum+=a[i].f;
}
if(sum<w){
out<<-1;
return 0;
}
for(i=1; i<=n; ++i, b=!b){
for(j=1; j<=w; ++j){
dp[b][j]=dp[!b][j];
if(j>=a[i].f)
dp[b][j]=max(dp[b][j], dp[!b][j+a[i].f]+a[i].s);
}
}
out<<dp[!b][w];
return 0;
}