Advertisement
bibaboba12345

Untitled

Nov 13th, 2022
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. // clang-format off
  2. #define _CRT_SECURE_NO_WARNINGS
  3. #include <iostream>
  4. #include <iomanip>
  5. #include <bitset>
  6. #include <vector>
  7. #include <algorithm>
  8. #include <random>
  9. #include <map>
  10. #include <string>
  11. #include <set>
  12. #include <deque>
  13. #include <cassert>
  14.  
  15.  
  16. const int N = 2e5 + 7, A = 26, C = 2, MOD = 998244353;
  17. const long long INF = 1e18;
  18. using namespace std;
  19. using ll = long long;
  20. using ld = long double;
  21.  
  22. const ld EPS = 1e-9;
  23.  
  24. long long abr, ban, yabl, gr;
  25.  
  26. long long check(ll sets) {
  27. ll a = abr - sets;
  28. ll b = ban - sets;
  29. ll y = yabl - sets * 2;
  30. ll sets2 = min(b, y);
  31. sets2 += (y - sets2) / 2;
  32. return sets + min(a / 2, sets2);
  33. }
  34.  
  35. void solve() {
  36. cin >> abr >> ban >> yabl >> gr;
  37. ll max_sets = gr;
  38. max_sets = min(gr, abr);
  39. max_sets = min(max_sets, yabl / 2);
  40. max_sets = min(max_sets, ban);
  41. ll ans = max(check(0), check(max_sets));
  42. /*for (int sets = 0; sets <= max_sets; sets++) {
  43. cout << check(sets) << " ";
  44. ans = max(ans, check(sets));
  45. }*/
  46.  
  47. int L = 0, R = max_sets;
  48.  
  49. for (int i = 0; i < 100; i++) {
  50. int i1 = L + (R - L) / 3;
  51. int i2 = R - (R - L) / 3;
  52. if (check(i1) < check(i2)) {
  53. L = i1;
  54. }
  55. else {
  56. R = i2;
  57. }
  58. }
  59.  
  60. for (int sets = L; sets <= R; sets++) {
  61. ans = max(ans, check(sets));
  62. }
  63.  
  64. cout << ans << "\n";
  65. }
  66.  
  67. signed main() {
  68. #ifdef _DEBUG
  69. freopen("input.txt", "r", stdin);
  70. #else
  71. std::ios::sync_with_stdio(false);
  72. cin.tie(0);
  73. #endif
  74. int t;
  75. cin >> t;
  76. while (t--) {
  77. solve();
  78. }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement