Submission #700938

# Submission time Handle Problem Language Result Execution time Memory
700938 2023-02-19T12:58:37 Z KiriLL1ca Marriage questions (IZhO14_marriage) C++17
88 / 100
1317 ms 28424 KB
#include <bits/stdc++.h>
#define fr first
#define sc second
#define all(x) (x).begin(), (x).end()
#define pb push_back
#define endl '\n'
#define sz(x) (int)((x).size())
#define vec vector
#define pw(x) (1ll << x)

using namespace std;

template <typename T> inline bool umin (T &a, const T &b) { if (a > b) { a = b; return 1; } return 0; }
template <typename T> inline bool umax (T &a, const T &b) { if (a < b) { a = b; return 1; } return 0; }

typedef long double ld;
typedef long long ll;
typedef unsigned long long ull;
typedef pair <int, int> pii;

const int N = 1e6;
vec <int> g[N];
int used[N], mt[N], active[N], us = 0;

inline bool kuhn (int v) {
    if (used[v] == us) return 0;
    used[v] = us;
    for (auto &u : g[v]) if (active[u] && !~mt[u]) { mt[u] = v; return 1; }
    for (auto &u : g[v]) if (active[u] && kuhn(mt[u])) { mt[u] = v; return 1; }
    return 0;
}

inline void solve () {
    int n, m, k; cin >> n >> m >> k;
    for (int i = 0; i < k; ++i) {
        int u, v; cin >> u >> v; --u, --v;
        g[v].pb(u);
    }

    fill(mt, mt + N, -1);
    vec <int> girls;
    for (int i = 0; i < m; ++i) girls.pb(i);

    ll ans = 0;
    for (int l = 0, r = 0; l < n; ++l) {
        while (r < n) {
            active[r] = 1;
            while (sz(girls)) {
                ++us;
                int go = girls.back();
                if (kuhn(go)) girls.pop_back();
                else break;
            }
            if (!sz(girls)) break;
            ++r;
        }

        if (sz(girls)) break;

        ans += n - r;

        if (~mt[l]) {
            girls.pb(mt[l]);
            mt[l] = -1;
            active[l] = 0;
        }
    }
    cout << ans << endl;
}

signed main () {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    #ifdef LOCAL
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
    #endif// LOCAL
    int t = 1; //cin >> t;
    while (t--) solve();
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 13 ms 27732 KB Output is correct
2 Correct 13 ms 27684 KB Output is correct
3 Correct 13 ms 27728 KB Output is correct
4 Correct 13 ms 27628 KB Output is correct
5 Correct 14 ms 27732 KB Output is correct
6 Correct 12 ms 27648 KB Output is correct
7 Correct 17 ms 27728 KB Output is correct
8 Correct 15 ms 27604 KB Output is correct
9 Correct 14 ms 27680 KB Output is correct
10 Correct 13 ms 27648 KB Output is correct
11 Correct 14 ms 27720 KB Output is correct
12 Correct 14 ms 27604 KB Output is correct
13 Incorrect 14 ms 27732 KB Output isn't correct
14 Correct 16 ms 27724 KB Output is correct
15 Incorrect 14 ms 27604 KB Output isn't correct
16 Correct 14 ms 27728 KB Output is correct
17 Correct 14 ms 27732 KB Output is correct
18 Correct 14 ms 27604 KB Output is correct
19 Correct 18 ms 27688 KB Output is correct
20 Correct 17 ms 27728 KB Output is correct
21 Correct 17 ms 27632 KB Output is correct
22 Correct 14 ms 27732 KB Output is correct
23 Correct 15 ms 27736 KB Output is correct
24 Correct 14 ms 27712 KB Output is correct
25 Correct 55 ms 27732 KB Output is correct
26 Correct 20 ms 27712 KB Output is correct
27 Correct 14 ms 27732 KB Output is correct
28 Correct 18 ms 27708 KB Output is correct
29 Correct 19 ms 27724 KB Output is correct
30 Correct 16 ms 27732 KB Output is correct
31 Correct 487 ms 28028 KB Output is correct
32 Correct 16 ms 27764 KB Output is correct
33 Correct 14 ms 27752 KB Output is correct
34 Correct 15 ms 27860 KB Output is correct
35 Correct 139 ms 28236 KB Output is correct
36 Correct 87 ms 28236 KB Output is correct
37 Correct 1317 ms 28180 KB Output is correct
38 Correct 35 ms 28236 KB Output is correct
39 Correct 58 ms 27856 KB Output is correct
40 Correct 16 ms 27824 KB Output is correct
41 Incorrect 20 ms 27880 KB Output isn't correct
42 Correct 22 ms 27944 KB Output is correct
43 Correct 23 ms 28044 KB Output is correct
44 Correct 36 ms 28236 KB Output is correct
45 Incorrect 20 ms 27988 KB Output isn't correct
46 Incorrect 32 ms 28424 KB Output isn't correct
47 Correct 33 ms 28276 KB Output is correct
48 Correct 30 ms 28284 KB Output is correct
49 Incorrect 32 ms 28356 KB Output isn't correct
50 Correct 174 ms 28016 KB Output is correct