fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. #define fi first
  5. #define se second
  6. #define siz(x) (int)(x.size())
  7. #define all(x) x.begin(), x.end()
  8. #define debug_arr(x,len) for(int _=1; _<=len; _++) cout<<x[_]<<" "; cout<<'\n';
  9. #define debug(x) cout<<'\n'<<#x<<": "<<x<<'\n';
  10. const int maxN = 1e5+5;
  11.  
  12. int n, m, p, a[maxN], b[maxN];
  13.  
  14. void solve()
  15. {
  16.  
  17. }
  18.  
  19. int32_t main()
  20. {
  21. freopen("CHECKIN.INP", "r", stdin);
  22. freopen("CHECKIN.OUT", "w", stdout);
  23. ios_base::sync_with_stdio(0); cin.tie(0);
  24. cin>>n>>m>>p;
  25. for(int i=1; i<=n; i+=1) cin>>a[i]>>b[i];
  26. if(p == 0)
  27. {
  28. int res = 1e18;
  29. for(int i=1; i<=n; i+=1)
  30. {
  31. res = min(res, b[i]);
  32. }
  33. cout<<res<<'\n';
  34. return 0;
  35. }
  36. int l = 0, r = 1e18, ans = 0;
  37. while(r - l >= 0)
  38. {
  39. int mid = (l+r)>>1;
  40. vector<int>v;
  41. for(int i=1; i<=n; i+=1)
  42. {
  43. if(a[i] == 0)
  44. {
  45. v.push_back(1e9);
  46. continue;
  47. }
  48. int xet = (mid - b[i]) / a[i];
  49. if(xet < 0) continue;
  50. else v.push_back(xet);
  51. }
  52. sort(all(v), greater<int>());
  53. int tmp = 0, ok = 0;
  54. for(int i=0; i<min(siz(v), m); i+=1) tmp += v[i];
  55. if(tmp >= p) ok = 1;
  56. if(siz(v) == 0) ok = 0;
  57. if(ok) r = mid-1, ans = mid;
  58. else l = mid+1;
  59. }
  60. cout<<ans<<'\n';
  61. }
Success #stdin #stdout 0s 5300KB
stdin
Standard input is empty
stdout
Standard output is empty