Submission #341604

#TimeUsernameProblemLanguageResultExecution timeMemory
341604amunduzbaevMarriage questions (IZhO14_marriage)C++14
100 / 100
852 ms25708 KiB
/** made by amunduzbaev **/ #include <bits/stdc++.h> using namespace std; #define ff first #define ss second #define pb push_back #define mp make_pair #define ub upper_bound #define lb lower_bound #define ll long long #define ld long double #define pii pair<int, int> #define pll pair<ll, ll> #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(),x.rend() #define fastios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define vll vector<ll> #define vii vector<int> #define vpii vector<pii> #define vpll vector<pll> #define cnt(a)__builtin_popcount(a) template<class T> bool umin(T& a, const T& b) {return a > b? a = b, true:false;} template<class T> bool umax(T& a, const T& b) {return a < b? a = b, true:false;} const int N = 1e6+5; const int mod = 1e9+7; const ll inf = 1e18; const ld Pi = acos(-1); int n, m, k, ans, match[N], used[N], ver, l, r; vector<vii> edges(N); bool kun(int cur){ if(used[cur] == ver) return 0; used[cur] = ver; for(auto x:edges[cur]){ if(x <= r && x >= l && (match[x] == -1 || kun(match[x]))) { match[x] = cur; return 1; } }return 0; } void solve(){ cin>>n>>m>>k; for(int i=0;i<k;i++){ int a, b; cin>>a>>b; edges[--b].pb(--a); } for(int i=0;i<n;i++) match[i] = -1; vii need; for(int i=0;i<m;i++){ int cur = i; ver++; while(r < n && !kun(cur)) r++, ver++; if(r == n) { cout<<0<<endl; return; } //for(int i=0;i<n;i++) cout<<match[i]<<" "; //cout<<"\n"; } bool ok = 1; for(l=0;l<n && ok;l++){ while(!need.empty()){ int cur = need.back(); ver++; while(r < n && !kun(cur)) r++, ver++; if(r == n) { ok = 0; break; } need.pop_back(); } if(!ok) break; //cout<<l<<" "<<r<<"\n"; ans += (n-r); if(match[l] != -1){ need.pb(match[l]); match[l] = -1; } } cout<<ans<<"\n"; return; } main(){ fastios int t = 0; if(!t) solve(); else { cin>>t; while (t--) solve(); } }

Compilation message (stderr)

marriage.cpp:90:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   90 | main(){
      |      ^
#Verdict Execution timeMemoryGrader output
Fetching results...