Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <stdlib.h>
- #include <vector>
- #define EPS 1e-9
- #define INF 1e+9
- using namespace std;
- int main() {
- freopen("input.txt","r",stdin);
- freopen("output.txt","w",stdout);
- int i,j,n,p,sum,m,r;
- m = INF;
- sum = 0;
- cin>>n>>p;
- vector <int> w (n+1,0);
- for (i=1; i<=n; ++i) {
- cin>>w[i];
- sum+=w[i];
- }
- vector < vector <bool> > dp (n+1, vector <bool> (sum+1,false));
- dp[0][0] = true;
- for (i=1; i<=n; ++i) {
- for (j=0; j<=sum; ++j) {
- dp[i][j] = dp[i-1][j];
- if (j-w[i] >= 0) dp[i][j] = dp[i][j] || dp[i-1][j-w[i]];
- }
- }
- for (i=0; i<=sum; ++i) {
- if (dp[n][i] && abs(i-p) < m) {
- m = abs(i-p);
- r = i;
- }
- }
- cout<<r;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment