Pagini recente » Borderou de evaluare (job #830156) | Cod sursa (job #255905) | Borderou de evaluare (job #398306) | Borderou de evaluare (job #1012123) | Cod sursa (job #3274365)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int n,w,s,mini;
int main()
{
fin>>n>>w;
vector<int>we(n,0),pe(n,0);
vector<vector<int>>dp(w+1,vector<int>(2,0));
for(int i=0;i<n;i++){
fin>>pe[i]>>we[i];
}
dp[0].assign(-1,w+1);
dp[0][0]=1;
for(int i=0;i<n;i++){
s=1-s;
for(int j=w-1;j>=0;j--){
dp[j][s]=dp[j][1-s];
if(dp[j][s]>0){
if(j+pe>=w&&mini>dp[j][s]+pe[i]){
mini=dp[j][s]+pe[i];
}
else if(dp[j+we[i]][s]>dp[j][s]+pe[i]){
}
}
}
}
}