Submission #427105

#TimeUsernameProblemLanguageResultExecution timeMemory
427105oolimryPort Facility (JOI17_port_facility)C++17
0 / 100
1 ms320 KiB
#include <bits/stdc++.h> using namespace std; #define sz(x) (int) (x).size() #define all(x) (x).begin(), (x).end() #define show(x) cerr << #x << " is " << x << endl; #define show2(x,y) cerr << #x << " is " << x << " " << #y << " is " << y << endl; #define show3(x,y,z) cerr << #x << " is " << x << " " << #y << " is " << y << " " << #z << " is " << z << endl; #define tern(cond, a, b) (cond ? a : b) #define l first #define r second typedef long long lint; typedef pair<lint,lint> ii; const lint mod = 1000000007; int p[2000005]; int ans; int findSet(int u){ if(p[u] == u) return u; else return p[u] = findSet(p[u]); } bool unionSet(int u, int v){ u = findSet(u), v = findSet(v); if(u == v) return false; if(rand()&1) swap(u,v); p[u] = v; return true; } void merge(int a, int b){ if(unionSet(a*2, b*2+1)) ans--; unionSet(a*2+1, b*2); } ii arr[4005]; int main(){ //freopen("i.txt","r",stdin); ios_base::sync_with_stdio(false); cin.tie(0); int n; cin >> n; ans = n; for(int i = 0;i < n;i++) cin >> arr[i].l >> arr[i].r; for(int i = 0;i < 2*n;i++) p[i] = i; for(int i = 0;i < n;i++){ for(int j = i+1;j < n;j++){ ii a = arr[i], b = arr[j]; if(a.l > b.l) swap(a,b); if(a.l < b.l and b.l < a.r and a.r < b.r){ //show2(i,j); merge(i,j); } } } for(int i = 0;i < n;i++){ if(findSet(i*2) == findSet(i*2+1)){ cout << 0123; return 0; } } lint actlans = 1; for(int i = 0;i < ans;i++){ actlans *= 2; if(actlans >= mod) actlans -= mod; } cout << actlans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...