Submission #443029

# Submission time Handle Problem Language Result Execution time Memory
443029 2021-07-09T13:45:28 Z leaked Marriage questions (IZhO14_marriage) C++14
22 / 100
542 ms 3008 KB
#include <bits/stdc++.h>
//#pragma GCC optimize("unroll-loops")
//#pragma GCC optimize("Ofast")
//#pragma GCC optimize("-O3")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define vec vector
#define sz(x) ( int)x.size()
#define m_p make_pair
#define f first
#define s second
#define pb push_back
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
using namespace std;
typedef long long ll;
typedef pair<ll, int> pli;
typedef pair<int,ll> pil;
typedef pair<int,int> pii;
typedef unsigned long long ull;
auto rng=bind(uniform_int_distribution<int>(1,1000),mt19937(time(0)));
template<class T> bool umax(T &a,const T &b){return (a<b?a=b,1:0);}
template<class T> bool umin(T &a,const T &b){return (a>b?a=b,1:0);}
const int N=3e4+1;
const int K=165;
const int M=2001;
vec<int> g[M];
vec<int>gr[N];
int uk;
int vl[N];
int mt[N];
int u[N],tt,n,m;
int tr;
bool kuhn(int v){
    if(u[v]==tt) return 0;
    u[v]=tt;
    for(auto &z : g[v]){
        if(z<=tr && mt[z]==-1){
            mt[z]=v;
            vl[uk++]=v;
            return 1;
        }
    }
    for(auto &z : g[v]){
        if(z<=tr && kuhn(mt[z])){
            mt[z]=v;
            return 1;
        }
    }
    return 0;
}
int check(int l,int r){
    tr=r;
    for(int i=0;i<uk;i++){
        mt[vl[i]]=-1;
    }
    uk=0;
    for(int i=0;i<m;i++){
        tt++;
        if(!kuhn(i)) return 0;
    }
    return 1;
}
bool kuhn2(int v){
    if(u[v]==tt) return 0;
    u[v]=tt;
    for(auto &z : gr[v]){
        if(mt[z]==-1){
            mt[z]=v;
            return 1;
        }
    }
    for(auto &z : gr[v]){
        if(kuhn2(mt[z])){
            mt[z]=v;
            return 1;
        }
    }
    return 0;
}
signed main(){
    ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int k;
    cin>>n>>m>>k;
    for(int i=0;i<k;i++){
        int v,u;
        cin>>v>>u;--v;--u;
        gr[v].pb(u);
    }
    fill(mt,mt+m,-1);
    int l=n;
    int h=0;
    while(h!=m && l>0){
        l--;
        tt++;
        h+=kuhn2(l);
    }
    if(h!=m){
        cout<<0;
        return 0;
    }
    fill(mt,mt+n,-1);
    for(int i=n-1;i>l;i--){
        for(auto &z : gr[i]) g[z].pb(i);
    }
    int r=n-1;
    ll ans=0;
    for(int i=l;i>=0;i--){
//        cout<<i<<endl;
        for(auto &z : gr[i]) g[z].pb(i);
        while(check(i,r-1)) r--;
//        cout<<i<<' '<<r<<endl;
        ans+=(n-r);
    }
    cout<<ans;
    return 0;
}

/*
5
1 2
2 3
3 4
4 5
5 1
*/
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 972 KB Output isn't correct
2 Incorrect 1 ms 972 KB Output isn't correct
3 Incorrect 1 ms 972 KB Output isn't correct
4 Incorrect 1 ms 972 KB Output isn't correct
5 Correct 1 ms 972 KB Output is correct
6 Correct 1 ms 972 KB Output is correct
7 Incorrect 1 ms 972 KB Output isn't correct
8 Correct 1 ms 972 KB Output is correct
9 Correct 1 ms 972 KB Output is correct
10 Correct 1 ms 972 KB Output is correct
11 Correct 1 ms 972 KB Output is correct
12 Correct 1 ms 972 KB Output is correct
13 Incorrect 1 ms 972 KB Output isn't correct
14 Incorrect 1 ms 972 KB Output isn't correct
15 Incorrect 1 ms 972 KB Output isn't correct
16 Incorrect 1 ms 972 KB Output isn't correct
17 Incorrect 1 ms 972 KB Output isn't correct
18 Incorrect 1 ms 972 KB Output isn't correct
19 Incorrect 2 ms 1100 KB Output isn't correct
20 Incorrect 1 ms 972 KB Output isn't correct
21 Correct 1 ms 972 KB Output is correct
22 Incorrect 1 ms 972 KB Output isn't correct
23 Incorrect 1 ms 1100 KB Output isn't correct
24 Incorrect 1 ms 972 KB Output isn't correct
25 Incorrect 8 ms 1272 KB Output isn't correct
26 Incorrect 3 ms 1100 KB Output isn't correct
27 Correct 1 ms 972 KB Output is correct
28 Incorrect 1 ms 972 KB Output isn't correct
29 Incorrect 4 ms 1212 KB Output isn't correct
30 Incorrect 4 ms 1100 KB Output isn't correct
31 Incorrect 27 ms 1612 KB Output isn't correct
32 Incorrect 10 ms 1100 KB Output isn't correct
33 Correct 1 ms 1100 KB Output is correct
34 Incorrect 2 ms 1100 KB Output isn't correct
35 Incorrect 31 ms 2144 KB Output isn't correct
36 Incorrect 17 ms 2068 KB Output isn't correct
37 Incorrect 24 ms 1760 KB Output isn't correct
38 Incorrect 152 ms 2364 KB Output isn't correct
39 Incorrect 62 ms 1228 KB Output isn't correct
40 Correct 4 ms 1228 KB Output is correct
41 Incorrect 13 ms 1612 KB Output isn't correct
42 Incorrect 108 ms 1808 KB Output isn't correct
43 Incorrect 143 ms 1852 KB Output isn't correct
44 Incorrect 432 ms 2536 KB Output isn't correct
45 Incorrect 13 ms 2020 KB Output isn't correct
46 Incorrect 165 ms 2868 KB Output isn't correct
47 Incorrect 539 ms 2896 KB Output isn't correct
48 Incorrect 542 ms 3008 KB Output isn't correct
49 Incorrect 418 ms 3000 KB Output isn't correct
50 Incorrect 214 ms 1532 KB Output isn't correct