제출 #1062546

#제출 시각아이디문제언어결과실행 시간메모리
1062546UnforgettableplPort Facility (JOI17_port_facility)C++17
22 / 100
6052 ms32856 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int modulo = 1e9+7; bool check_intersection(pair<int,int> a,pair<int,int> b) { return (a.first<b.first and b.first<a.second and a.second<b.second) or (b.first<a.first and a.first<b.second and b.second<a.second); } int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int N; cin >> N; vector<pair<int,int>> ships(N); for(auto&[a,b]:ships)cin>>a>>b; vector<vector<int>> adj(N); for(int u=0;u<N;u++) { for(int v=u+1;v<N;v++) { if(check_intersection(ships[u],ships[v])) { adj[u].emplace_back(v); adj[v].emplace_back(u); } } } int ans = 1; vector<int> visited(N,-1); bool works = true; function<void(int,int)> dfs = [&](int x,int colour) { if(visited[x]!=-1) { if(visited[x]!=colour)works=false; return; } visited[x]=colour; for(int&i:adj[x])dfs(i,colour^1); }; for(int i=0;i<N;i++)if(visited[i]==-1){ ans<<=1; ans%=modulo; dfs(i,0); } if(!works)ans=0; cout << ans << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...