Submission #1216727

#TimeUsernameProblemLanguageResultExecution timeMemory
1216727GrayPort Facility (JOI17_port_facility)C++20
0 / 100
0 ms324 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ull unsigned ll #define ld long double #define ff first #define ss second #define ln "\n" const ll MOD = 1e9+7; void dfs(ll u, vector<ll> &vis, vector<vector<ll>> &A){ vis[u]=1; for (auto v:A[u]){ if (vis[v]) continue; dfs(v, vis, A); } } void solve(){ ll n; cin >> n; vector<ll> a(2*n+1); vector<array<ll, 2>> rng(n); for (ll i=0; i<n; i++){ ll l, r; cin >> l >> r; a[l]=i; a[r]=i; rng[i] = {l, r}; } vector<vector<ll>> A(n); set<array<ll, 2>> present; vector<ll> col(n, -1); for (ll i=1; i<=2*n; i++){ // for (auto ch:present) cout << ch << " "; // cout << ln; if (!present.count({rng[a[i]][1], a[i]})){ for (auto [r, ind]:present){ if (r>rng[a[i]][1]) break; if (col[ind]==-1) { if (col[a[i]]==-1){ col[ind]=1; col[a[i]]=0; }else col[ind]=col[a[i]]^1; }else{ if (col[a[i]]==-1) col[a[i]]=col[ind]^1; else if (col[a[i]]==col[ind]){ cout << 0 << ln; return; } } A[ind].push_back(a[i]); A[a[i]].push_back(ind); } present.insert({rng[a[i]][1], a[i]}); }else{ present.erase({rng[a[i]][1], a[i]}); } } ll res=1; vector<ll> vis(n); for (ll i=0; i<n; i++){ if (!vis[i]) dfs(i, vis, A), res=(res*2)%MOD; } cout << res << ln; } int main(){ ios_base::sync_with_stdio(0); cin.tie(nullptr); ll t=1; // cin >> t; while (t--) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...