171732025-05-28 11:10:52szilGame on a Matrixcpp17Elfogadva 100/1003.894s8400 KiB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

const int MAXN = 1001;
const int INF = 1e9+100;

int a[MAXN][MAXN], n;

bool f(int x) {
    vector<vector<int>> g(n+1);
    vector<int> mt(n+1, -1);
    vector<bool> vis(n+1);
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (a[i][j] >= x) {
                g[i].emplace_back(j);
            }
        }
    }

    for (int i = 1; i <= n; i++) {
        random_shuffle(g[i].begin(), g[i].end());
    }

    auto try_kuhn = [&](auto &&self, int u) -> bool {
        if (vis[u]) return false;
        vis[u] = 1;
        for (int v : g[u]) {
            if (mt[v] == -1) {
                mt[v] = u;
                return true;
            }
        }
        for (int v : g[u]) {
            if (self(self, mt[v])) {
                mt[v] = u;
                return true;
            }
        }
        return false;
    };
    for (int i = 1; i <= n; i++) {
        fill(vis.begin(), vis.end(), 0);
        try_kuhn(try_kuhn, i);
    }
    return count(mt.begin(), mt.end(), -1) == 1;
}

void solve() {
    srand(42);
    cin >> n;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            cin >> a[i][j];
        }
    }
    int lo = 0, hi = INF;
    while (lo < hi) {
        int mid = (lo + hi + 1) / 2;
        if (f(mid)) lo = mid;
        else hi = mid-1;
    }
    cout << lo << "\n";
}

int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    int t = 1; 
    // cin >> t;
    while (t--) solve();
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
subtask210/10
2Elfogadva1ms452 KiB
3Elfogadva1ms348 KiB
4Elfogadva1ms316 KiB
5Elfogadva1ms316 KiB
6Elfogadva1ms316 KiB
7Elfogadva1ms316 KiB
8Elfogadva1ms432 KiB
9Elfogadva1ms316 KiB
10Elfogadva1ms500 KiB
11Elfogadva1ms316 KiB
12Elfogadva1ms388 KiB
13Elfogadva1ms508 KiB
14Elfogadva1ms472 KiB
15Elfogadva1ms316 KiB
16Elfogadva1ms320 KiB
17Elfogadva1ms500 KiB
18Elfogadva1ms316 KiB
19Elfogadva1ms316 KiB
20Elfogadva1ms316 KiB
21Elfogadva1ms664 KiB
22Elfogadva1ms316 KiB
23Elfogadva1ms320 KiB
24Elfogadva1ms328 KiB
subtask330/30
25Elfogadva1ms316 KiB
26Elfogadva2ms564 KiB
27Elfogadva3ms820 KiB
28Elfogadva8ms1252 KiB
29Elfogadva18ms1876 KiB
30Elfogadva18ms1856 KiB
31Elfogadva17ms1772 KiB
32Elfogadva8ms1228 KiB
33Elfogadva17ms1588 KiB
34Elfogadva4ms1012 KiB
subtask445/45
35Elfogadva6ms820 KiB
36Elfogadva6ms820 KiB
37Elfogadva4ms828 KiB
38Elfogadva6ms820 KiB
39Elfogadva4ms820 KiB
40Elfogadva6ms820 KiB
41Elfogadva6ms864 KiB
42Elfogadva4ms820 KiB
43Elfogadva4ms620 KiB
44Elfogadva6ms860 KiB
45Elfogadva6ms1004 KiB
46Elfogadva6ms820 KiB
47Elfogadva6ms824 KiB
48Elfogadva6ms820 KiB
49Elfogadva4ms820 KiB
50Elfogadva17ms820 KiB
51Elfogadva10ms864 KiB
52Elfogadva9ms820 KiB
53Elfogadva8ms928 KiB
54Elfogadva8ms748 KiB
55Elfogadva9ms820 KiB
56Elfogadva10ms876 KiB
57Elfogadva1ms316 KiB
58Elfogadva2ms564 KiB
subtask515/15
59Elfogadva293ms6360 KiB
60Elfogadva277ms6336 KiB
61Elfogadva298ms6196 KiB
62Elfogadva293ms6276 KiB
63Elfogadva296ms6192 KiB
64Elfogadva298ms6196 KiB
65Elfogadva296ms6360 KiB
66Elfogadva294ms6260 KiB
67Elfogadva293ms6196 KiB
68Elfogadva296ms6368 KiB
69Elfogadva296ms6196 KiB
70Elfogadva296ms6392 KiB
71Elfogadva263ms5396 KiB
72Elfogadva261ms6336 KiB
73Elfogadva291ms6196 KiB
74Elfogadva2.168s8400 KiB
75Elfogadva887ms7388 KiB
76Elfogadva2.188s8396 KiB
77Elfogadva3.894s7376 KiB
78Elfogadva2.783s7392 KiB
79Elfogadva551ms6136 KiB