답안 #526231

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
526231 2022-02-14T02:07:15 Z armashka 결혼 문제 (IZhO14_marriage) C++17
48 / 100
1500 ms 10648 KB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
 
#pragma comment(linker, "/stack:200000000")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
 
#define fast ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
#define file(s) freopen(s".in", "r", stdin);freopen(s".out", "w", stdout);
#define all(v) v.begin(),v.end()
#define rall(v) v.rbegin(),v.rend()
#define pb push_back
#define sz size()
#define ft first
#define sd second
 
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef unsigned long long ull;
    
const int N = 2e5 + 10;
const int M = 1e3 + 5;
const ll inf = 2e18;
const ll mod = 1e9 + 7;
const double Pi = acos(-1); 

ll binpow(ll x, ll ti) { ll res = 1;while (ti){if(ti & 1)res *= x;x *= x;ti >>= 1; x %= mod; res %= mod;} return res;}
ll binmul(ll x, ll ti) { ll res = 0;while (ti){if(ti & 1)res += x;x += x;ti >>= 1; x %= mod; res %= mod;} return res;}
ll nok(ll a, ll b) { return (a*b)/__gcd(abs(a),abs(b)) * (a*b > 0 ? 1 : -1); }
bool odd(ll n) { return (n % 2 == 1); }                                   
bool even(ll n) { return (n % 2 == 0); }

ll n, m, k, a[N], b[N], mt[N], ans;
vector <ll> g[N];
bool used[N];

bool dfs(ll v) {
    used[v] = 1;
    for (auto to : g[v]) {
        if (mt[to] == -1) {
            mt[to] = v;
            return 1;
        }
    }
    for (auto to : g[v]) {
        if (!used[mt[to]] && dfs(mt[to])) {
            mt[to] = v;
            return 1;
        }
    }
    return 0;
}

bool check(ll l, ll r) {
    memset(mt, -1, sizeof(mt));
    for (int i = 1; i <= n; ++ i) g[i].clear();
    for (int i = 1; i <= k; ++ i) {
        if (l <= a[i] && a[i] <= r) g[a[i]].pb(b[i]);
    }
    for (int i = 1; i <= n; ++ i) {
        memset(used, 0, sizeof(used));
        dfs(i);
    }
    for (int i = 1; i <= m; ++ i) {
        if (mt[i] == -1) return 0;
    }
    return 1;
}

const void solve(/*Armashka*/) {
    cin >> n >> m >> k;
    for (int i = 1; i <= k; ++ i) cin >> a[i] >> b[i];
    for (int i = 1; i <= n; ++ i) {
        int l = 1, r = n - i + 1, j = -1;
        while (l <= r) {
            ll mid = (l + r) / 2;
            if (check(i, i + mid - 1)) r = mid - 1, j = i + mid - 1; 
            else l = mid + 1;
        }
        if (j == -1) continue;
        ans += n - j + 1;
    }
    cout << ans;
}  
 
signed main() {
    srand(time(NULL));
    fast;
    // file("");
    int tt = 1;
    // cin >> tt;
    while (tt --) {                                                             
        solve();
    }                            
}
// Uaqyt, otedi, ketedi, mulde bilinbei, ulger
// Kunder seni kutpeidi, susyz ospeidi gulder

Compilation message

marriage.cpp:5: warning: ignoring '#pragma comment ' [-Wunknown-pragmas]
    5 | #pragma comment(linker, "/stack:200000000")
      |
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 6724 KB Output is correct
2 Correct 5 ms 6732 KB Output is correct
3 Correct 6 ms 6688 KB Output is correct
4 Correct 5 ms 6684 KB Output is correct
5 Correct 5 ms 6724 KB Output is correct
6 Correct 5 ms 6732 KB Output is correct
7 Correct 12 ms 6836 KB Output is correct
8 Correct 4 ms 6684 KB Output is correct
9 Correct 4 ms 6732 KB Output is correct
10 Correct 3 ms 6732 KB Output is correct
11 Correct 4 ms 6732 KB Output is correct
12 Correct 4 ms 6732 KB Output is correct
13 Correct 6 ms 6688 KB Output is correct
14 Correct 14 ms 6780 KB Output is correct
15 Correct 16 ms 6732 KB Output is correct
16 Correct 15 ms 6784 KB Output is correct
17 Correct 12 ms 6688 KB Output is correct
18 Correct 15 ms 6788 KB Output is correct
19 Correct 296 ms 6848 KB Output is correct
20 Correct 286 ms 6784 KB Output is correct
21 Correct 275 ms 6772 KB Output is correct
22 Correct 297 ms 6764 KB Output is correct
23 Correct 294 ms 6808 KB Output is correct
24 Correct 270 ms 6852 KB Output is correct
25 Execution timed out 1572 ms 7116 KB Time limit exceeded
26 Execution timed out 1587 ms 6860 KB Time limit exceeded
27 Execution timed out 1594 ms 6732 KB Time limit exceeded
28 Execution timed out 1570 ms 6732 KB Time limit exceeded
29 Execution timed out 1572 ms 7116 KB Time limit exceeded
30 Execution timed out 1587 ms 6988 KB Time limit exceeded
31 Execution timed out 1551 ms 8260 KB Time limit exceeded
32 Execution timed out 1557 ms 6948 KB Time limit exceeded
33 Execution timed out 1566 ms 6688 KB Time limit exceeded
34 Execution timed out 1561 ms 6824 KB Time limit exceeded
35 Execution timed out 1542 ms 10180 KB Time limit exceeded
36 Execution timed out 1553 ms 9692 KB Time limit exceeded
37 Execution timed out 1583 ms 8268 KB Time limit exceeded
38 Execution timed out 1529 ms 10512 KB Time limit exceeded
39 Execution timed out 1561 ms 6900 KB Time limit exceeded
40 Execution timed out 1577 ms 7136 KB Time limit exceeded
41 Execution timed out 1567 ms 7612 KB Time limit exceeded
42 Execution timed out 1539 ms 8016 KB Time limit exceeded
43 Execution timed out 1548 ms 8644 KB Time limit exceeded
44 Execution timed out 1577 ms 10036 KB Time limit exceeded
45 Execution timed out 1518 ms 7972 KB Time limit exceeded
46 Execution timed out 1535 ms 9724 KB Time limit exceeded
47 Execution timed out 1514 ms 10648 KB Time limit exceeded
48 Execution timed out 1542 ms 10324 KB Time limit exceeded
49 Execution timed out 1508 ms 10052 KB Time limit exceeded
50 Execution timed out 1569 ms 6980 KB Time limit exceeded