Advertisement
Vince14

Talent Show

Mar 11th, 2023
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.65 KB | Source Code | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <cstring>
  4. #include <algorithm>
  5. #include <cmath>
  6. #include <vector>
  7. #include <set>
  8. #include <map>
  9. #include <stack>
  10. #include <queue>
  11. #include <deque>
  12. #include <unordered_map>
  13. #include <numeric>
  14. #include <iomanip>
  15. #include <regex>
  16. using namespace std;
  17. #define pii pair<long long , long long>
  18. #define FAST ios_base::sync_with_stdio(false); cin.tie(NULL)
  19. const long long dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
  20. const long long dl[2] = {1, -1};
  21. const long long MOD = 1e9 + 7;
  22. const long long MAX = 255;
  23.  
  24. long long n, w;
  25. long long weight[MAX], talent[MAX];
  26. long long dp[1005];
  27.  
  28. bool check(long long cur){
  29.     for(long long i = 0; i <= w; i++){
  30.         dp[i] = -2e9;
  31.     }
  32.     dp[0] = 0;
  33.     for(long long i = 0; i < n; i++){
  34.         long long tmp = 1000 * talent[i] - cur * weight[i];
  35.         for(long long j = w; j >= 0; j--){
  36.             if(dp[j] == -2e9){
  37.                 continue;
  38.             }
  39.             if(dp[min(w, j + weight[i])] < dp[j] + tmp){
  40.                 dp[min(w, j + weight[i])] = dp[j] + tmp;
  41.             }
  42.         }
  43.     }
  44.     if(dp[w] >= 0){
  45.         return true;
  46.     }
  47.     else{
  48.         return false;
  49.     }
  50. }
  51.  
  52. int main() {
  53.     freopen("talent.in", "r", stdin);
  54.     freopen("talent.out", "w", stdout);
  55.     FAST;
  56.     cin >> n >> w;
  57.     for(long long i = 0; i < n; i++){
  58.         cin >> weight[i] >> talent[i];
  59.     }
  60.     long long lo = 0, hi = 250000001;
  61.     while(lo < hi){
  62.         long long mid = (lo + hi) / 2 + 1;
  63.         if(check(mid)){
  64.             lo = mid;
  65.         }
  66.         else{
  67.             hi = mid - 1;
  68.         }
  69.     }
  70.     cout << lo << "\n";
  71. }
  72.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement