Submission #655981

#TimeUsernameProblemLanguageResultExecution timeMemory
655981KahouPort Facility (JOI17_port_facility)C++14
0 / 100
0 ms340 KiB
#include<bits/stdc++.h> using namespace std; #define F first #define S second #define endl '\n' typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; const int mod = 1e9 + 7; int mul(int a, int b) { return 1ll*a*b%mod; } int pw(int a, int b) { int out = 1; while (b) { if (b&1) out = mul(out, a); a = mul(a,a); b>>=1; } return out; } const int N = 1e6 + 50; int n, L[N], R[N], par[N], sz[N], cnt; int getroot(int u) { if (u == par[u]) return u; return par[u] = getroot(par[u]); } void uniset(int u, int v) { u = getroot(u), v = getroot(v); if (u == v) return; if (sz[u] < sz[v]) swap(u, v); par[v] = u; sz[u] += sz[v]; cnt--; } void solve() { cin >> n; cnt = n; for (int i = 1; i <= n; i++) { cin >> L[i] >> R[i]; par[i] = i; sz[i] = 1; } for (int u = 1; u <= n; u++) { for (int v = 1; v <= n; v++) { if (L[u] < L[v] && L[v] < R[u] && R[u] < R[v]) { if (getroot(u) == getroot(v)) { cout << 0 << endl; return; } uniset(u, v); } } } cout << pw(2, cnt) << endl; } int main() { solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...