제출 #1336753

#제출 시각아이디문제언어결과실행 시간메모리
1336753boclobanchatPort Facility (JOI17_port_facility)C++20
0 / 100
1 ms344 KiB
#include<bits/stdc++.h>
using namespace std;
const int MAXN=2e6+5;
const int mod=1e9+7;
struct fenwicktree
{
	int fen[MAXN];
	int getlog(long long n) { return 63-__builtin_clzll(n); }
	void update(int i,int n,int val) { for(;i<=n;i+=i&-i) fen[i]+=val; }
	int get(int i) { int ans=0;for(;i;i-=i&-i) ans+=fen[i];return ans; }
	int walk(int n,int val) { int ans=0;for(int i=getlog(n);i+1;i--) if(ans+(1<<i)<=n&&val>=fen[ans+(1<<i)]) val-=fen[ans+=(1<<i)];return ans+1; }
};
fenwicktree fa,fb;
pair<int,int> A[MAXN];
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n;
	cin>>n;
	for(int i=1;i<=n;i++) cin>>A[i].first>>A[i].second;
	sort(A+1,A+n+1);
	int ans=1;
	for(int i=1;i<=n;i++)
	{
		int a=fa.get(A[i].second)-fa.get(A[i].first);
		int b=fb.get(A[i].second)-fb.get(A[i].first);
		if(a&&b) return cout<<0,0;
		if(!a) fa.update(A[i].second,n*2,1);
		else fb.update(A[i].second,n*2,1);
		if(!a&&!b) ans=ans*2%mod;
	}
	cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...