Advertisement
SAURAVKR

And and Or

Jan 25th, 2025
16
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.74 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. using ll = long long;
  4.  
  5. int main() {
  6.     int a, b;
  7.     cin >> a >> b;
  8.     vector<vector<int>> c(a, vector<int>(b));
  9.     for (int i = 0; i < a; ++i) {
  10.         for (int j = 0; j < b; ++j) {
  11.             cin >> c[i][j];
  12.         }
  13.     }
  14.     int d;
  15.     cin >> d;
  16.  
  17.     unordered_set<int> e;
  18.     for (int j = 0; j < b; ++j) {
  19.         vector<pair<int, int>> f;
  20.         for (int i = 0; i < a; ++i) {
  21.             f.emplace_back(c[i][j], i);
  22.         }
  23.         sort(f.begin(), f.end(), [](const pair<int, int> &g, const pair<int, int> &h) {
  24.             return g.first > h.first;
  25.         });
  26.         for (int i = 0; i < 2 && i < static_cast<int>(f.size()); ++i) {
  27.             e.insert(f[i].second);
  28.         }
  29.     }
  30.  
  31.     vector<int> f(e.begin(), e.end());
  32.     ll g = 0;
  33.     for (size_t i = 0; i < f.size(); ++i) {
  34.         for (size_t j = i; j < f.size(); ++j) {
  35.             int h = f[i], k = f[j];
  36.             vector<int> l(b);
  37.             for (int t = 0; t < b; ++t) {
  38.                 l[t] = max(c[h][t], c[k][t]);
  39.             }
  40.  
  41.             ll m = 0, n = 1e18, o = 0;
  42.             while (m <= n) {
  43.                 ll p = (m + n) / 2, q = 0;
  44.                 bool r = true;
  45.                 for (int t = 0; t < b; ++t) {
  46.                     ll s = (p + l[t] - 1) / l[t];
  47.                     q += s;
  48.                     if (q > d) {
  49.                         r = false;
  50.                         break;
  51.                     }
  52.                 }
  53.                 if (r) {
  54.                     o = p;
  55.                     m = p + 1;
  56.                 } else {
  57.                     n = p - 1;
  58.                 }
  59.             }
  60.             g = max(g, o);
  61.         }
  62.     }
  63.  
  64.     cout << g << "\n";
  65.     return 0;
  66. }
  67.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement