171712025-05-28 11:05:14szilGame on a Matrixcpp17Wrong answer 30/1005.092s7584 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, 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
subtask20/10
2Wrong answer1ms508 KiB
3Accepted1ms316 KiB
4Wrong answer1ms316 KiB
5Wrong answer1ms316 KiB
6Accepted1ms556 KiB
7Accepted1ms316 KiB
8Wrong answer1ms316 KiB
9Accepted1ms316 KiB
10Wrong answer1ms316 KiB
11Accepted1ms316 KiB
12Accepted1ms508 KiB
13Accepted1ms404 KiB
14Wrong answer1ms316 KiB
15Wrong answer1ms316 KiB
16Accepted1ms316 KiB
17Accepted1ms316 KiB
18Wrong answer1ms316 KiB
19Accepted1ms548 KiB
20Accepted1ms316 KiB
21Wrong answer1ms316 KiB
22Accepted1ms316 KiB
23Wrong answer1ms316 KiB
24Wrong answer1ms316 KiB
subtask330/30
25Accepted1ms316 KiB
26Accepted2ms564 KiB
27Accepted3ms820 KiB
28Accepted12ms1076 KiB
29Accepted32ms1932 KiB
30Accepted32ms1916 KiB
31Accepted28ms1840 KiB
32Accepted12ms1200 KiB
33Accepted19ms1660 KiB
34Accepted6ms1076 KiB
subtask40/45
35Accepted8ms820 KiB
36Accepted8ms820 KiB
37Accepted8ms820 KiB
38Accepted8ms1012 KiB
39Accepted8ms820 KiB
40Wrong answer7ms624 KiB
41Accepted8ms900 KiB
42Accepted7ms840 KiB
43Accepted7ms820 KiB
44Accepted8ms820 KiB
45Accepted8ms820 KiB
46Accepted8ms860 KiB
47Accepted8ms864 KiB
48Accepted8ms820 KiB
49Accepted8ms860 KiB
50Accepted43ms868 KiB
51Accepted9ms820 KiB
52Accepted25ms820 KiB
53Accepted9ms856 KiB
54Accepted9ms860 KiB
55Wrong answer13ms1012 KiB
56Wrong answer25ms820 KiB
57Accepted1ms316 KiB
58Accepted2ms564 KiB
subtask50/15
59Accepted1.534s6368 KiB
60Wrong answer1.358s6284 KiB
61Accepted1.605s6420 KiB
62Accepted1.424s6280 KiB
63Accepted1.534s6452 KiB
64Accepted1.557s6452 KiB
65Accepted1.546s6416 KiB
66Accepted1.45s6452 KiB
67Accepted1.521s6196 KiB
68Accepted1.562s6452 KiB
69Accepted1.534s6448 KiB
70Accepted1.588s6272 KiB
71Accepted760ms5428 KiB
72Accepted1.036s6456 KiB
73Accepted1.542s6452 KiB
74Time limit exceeded5.092s7420 KiB
75Time limit exceeded5.078s6196 KiB
76Time limit exceeded5.085s7424 KiB
77Time limit exceeded5.085s7380 KiB
78Time limit exceeded5.085s7584 KiB
79Accepted4.671s6196 KiB