171722025-05-28 11:09:50szilGame on a Matrixcpp17Time limit exceeded 85/1005.087s8456 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);
            }
        }
    }

    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 || 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() {
    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;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
subtask210/10
2Accepted1ms316 KiB
3Accepted1ms548 KiB
4Accepted1ms316 KiB
5Accepted1ms316 KiB
6Accepted1ms316 KiB
7Accepted1ms316 KiB
8Accepted1ms316 KiB
9Accepted1ms316 KiB
10Accepted1ms316 KiB
11Accepted1ms508 KiB
12Accepted1ms316 KiB
13Accepted1ms316 KiB
14Accepted1ms316 KiB
15Accepted1ms388 KiB
16Accepted1ms364 KiB
17Accepted1ms508 KiB
18Accepted1ms316 KiB
19Accepted1ms316 KiB
20Accepted1ms316 KiB
21Accepted1ms508 KiB
22Accepted1ms316 KiB
23Accepted1ms316 KiB
24Accepted1ms316 KiB
subtask330/30
25Accepted1ms316 KiB
26Accepted2ms576 KiB
27Accepted4ms820 KiB
28Accepted10ms1076 KiB
29Accepted32ms1936 KiB
30Accepted32ms1864 KiB
31Accepted28ms1816 KiB
32Accepted12ms1196 KiB
33Accepted19ms1588 KiB
34Accepted6ms820 KiB
subtask445/45
35Accepted8ms1012 KiB
36Accepted8ms1004 KiB
37Accepted8ms856 KiB
38Accepted8ms820 KiB
39Accepted7ms860 KiB
40Accepted6ms700 KiB
41Accepted8ms656 KiB
42Accepted6ms820 KiB
43Accepted7ms1012 KiB
44Accepted8ms820 KiB
45Accepted8ms824 KiB
46Accepted8ms820 KiB
47Accepted8ms864 KiB
48Accepted8ms828 KiB
49Accepted8ms772 KiB
50Accepted39ms876 KiB
51Accepted9ms868 KiB
52Accepted25ms864 KiB
53Accepted9ms824 KiB
54Accepted9ms860 KiB
55Accepted9ms636 KiB
56Accepted26ms872 KiB
57Accepted1ms508 KiB
58Accepted2ms576 KiB
subtask50/15
59Accepted1.409s6328 KiB
60Accepted1.256s6452 KiB
61Accepted1.495s6452 KiB
62Accepted1.286s6460 KiB
63Accepted1.399s6340 KiB
64Accepted1.424s6452 KiB
65Accepted1.424s6452 KiB
66Accepted1.304s6452 KiB
67Accepted1.402s6452 KiB
68Accepted1.427s6452 KiB
69Accepted1.399s6196 KiB
70Accepted1.47s6416 KiB
71Accepted644ms5428 KiB
72Accepted936ms6196 KiB
73Accepted1.409s6452 KiB
74Time limit exceeded5.083s8456 KiB
75Time limit exceeded5.08s7380 KiB
76Time limit exceeded5.085s8324 KiB
77Time limit exceeded5.087s7392 KiB
78Time limit exceeded5.085s7404 KiB
79Accepted4.662s6268 KiB