Advertisement
Guest User

Untitled

a guest
May 20th, 2021
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.24 KB | None | 0 0
  1. #pragma GCC optimize("Ofast")
  2. #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,fma")
  3. #pragma GCC optimize("unroll-loops")
  4. #include <bits/stdc++.h>
  5. #include <complex>
  6. #include <queue>
  7. #include <set>
  8. #include <unordered_set>
  9. #include <list>
  10. #include <chrono>
  11. #include <random>
  12. #include <iostream>
  13. #include <algorithm>
  14. #include <cmath>
  15. #include <string>
  16. #include <vector>
  17. #include <map>
  18. #include <unordered_map>
  19. #include <stack>
  20. #include <iomanip>
  21. #include <fstream>
  22.  
  23. using namespace std;
  24.  
  25. typedef long long ll;
  26. typedef long double ld;
  27. typedef pair<int,int> p32;
  28. typedef pair<ll,ll> p64;
  29. typedef pair<double,double> pdd;
  30. typedef vector<ll> v64;
  31. typedef vector<int> v32;
  32. typedef vector<vector<int> > vv32;
  33. typedef vector<vector<ll> > vv64;
  34. typedef vector<vector<p64> > vvp64;
  35. typedef vector<p64> vp64;
  36. typedef vector<p32> vp32;
  37. ll MOD = 998244353;
  38. double eps = 1e-12;
  39. #define forn(i,e) for(ll i = 0; i < e; i++)
  40. #define forsn(i,s,e) for(ll i = s; i < e; i++)
  41. #define rforn(i,s) for(ll i = s; i >= 0; i--)
  42. #define rforsn(i,s,e) for(ll i = s; i >= e; i--)
  43. #define ln "\n"
  44. #define dbg(x) cout<<#x<<" = "<<x<<ln
  45. #define mp make_pair
  46. #define pb push_back
  47. #define fi first
  48. #define se second
  49. #define INF 2e9
  50. #define fast_cin() ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
  51. #define all(x) (x).begin(), (x).end()
  52. #define sz(x) ((ll)(x).size())
  53. #define MaxVal 1000*100+1
  54.  
  55. int dp[1001][MaxVal+1] = {0};
  56. int solve(vector<int> wt, vector<int> v, int n, int W){
  57.     memset(dp,0,sizeof(dp));
  58.     for(int i=0; i<=MaxVal;i++){
  59.         dp[1][i] = INF;
  60.     }
  61.     dp[1][0] = 0;
  62.     dp[1][v[1]] = wt[1];
  63.     for(int i=2; i<=n;i++){
  64.         for(int val =0 ;val<=MaxVal;val++ ){
  65.             dp[i][val] = dp[i-1][val];
  66.             if(v[i]>val){
  67.                 continue;
  68.             }
  69.             dp[i][val] = min(wt[i] + dp[i-1][val-v[i]], dp[i][val]);
  70.         }
  71.     }
  72.     int ans = 0;
  73.     for(int i=0; i<=MaxVal;i++){
  74.         //cout<<dp[n-1][i]<<endl;
  75.         if(dp[n][i]<=W)
  76.         ans = i;
  77.     }
  78.     return ans;
  79. }
  80. int main()
  81. {
  82.  fast_cin();
  83.  int n,w;
  84.  cin>>n>>w;
  85.  vector<int> wt(n+1), v(n+1);
  86.  for(int i=1; i<=n;i++){
  87.      cin>>wt[i]>>v[i];
  88.  }
  89. cout<<solve(wt,v,n,w)<<endl;
  90.  
  91.  return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement