제출 #285432

#제출 시각아이디문제언어결과실행 시간메모리
285432YJUPort Facility (JOI17_port_facility)C++14
0 / 100
1 ms384 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll,ll> pll; typedef long double ld; const ll MOD=1e9+7; const ll N=2e6+5; const ld pi=3.14159265359; const ll INF=(1LL<<62); #define REP(i,n) for(ll i=0;i<n;i++) #define REP1(i,n) for(ll i=1;i<=n;i++) #define pb push_back #define mp make_pair #define X first #define Y second #define setp setprecision #define lwb lower_bound #define SZ(a) (ll)a.size() ll seg[4*N],x,y,n; vector<pll> v; void ins(ll id,ll l,ll r,ll to,ll d){ if(r==l+1){seg[id]+=d;return ;} ll mid=(l+r)/2; if(to<mid){ ins(id*2,l,mid,to,d); }else{ ins(id*2+1,mid,r,to,d); } seg[id]=seg[id*2]+seg[id*2+1]; } ll SRC(ll id,ll l,ll r,ll ql,ll qr){ if(l>=ql&&r<=qr)return seg[id]; if(l>=qr||r<=ql)return 0; ll mid=(l+r)/2; return SRC(id*2,l,mid,ql,qr)+SRC(id*2+1,mid,r,ql,qr); } int main(){ ios_base::sync_with_stdio(0);cin.tie(0); cin>>n; REP1(i,n){ cin>>x>>y;v.pb(mp(x,y)); } ll ans=1; sort(v.begin(),v.end()); for(auto i:v){ ll tmp=SRC(1,0,N,i.X,i.Y); if(tmp<=1){ if(tmp==0)ans=(ans*2)%MOD; ins(1,0,N,i.Y,1); }else{ ans*=0; } } for(auto &i:v){ ins(1,0,N,i.Y,-1); i.X=n+1-i.X;i.Y=n+1-i.Y; swap(i.X,i.Y); } sort(v.begin(),v.end()); for(auto i:v){ ll tmp=SRC(1,0,N,i.X,i.Y); if(tmp<=1){ ins(1,0,N,i.Y,1); }else{ ans*=0; } } cout<<ans<<"\n"; 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...