Submission #4272331


Source Code Expand

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> P;
#define N 2000010
#define mod 1000000007
ll nxt[N],n;
P d[N];
vector<ll> g[N];
void make_edge(ll a,ll b){
  //cout<<"edge:"<<a<<" "<<b<<endl;
  g[a].push_back(b);
  g[b].push_back(a);
}
ll vis[N];
bool dfs(ll x,ll col){
  if(~vis[x]){
    return vis[x]==col;
  }
  vis[x]=col;
  for(auto y:g[x]){
    if(dfs(y,1^col)==0)return 0;
  }
  return 1;
}
bool solve(){
  stack<ll> s[2];
  vector<P> v;
  for(int i=0;i<n;i++){
    v.push_back(make_pair(d[i].first,i*2+0));
    v.push_back(make_pair(d[i].second,i*2+1));
  }sort(v.begin(),v.end());
  for(int i=0;i<2*n;i++){
    ll id=v[i].second/2,type=v[i].second%2;
    ll col=vis[d[id].second];
    if(type==0)s[col].push(id);
    if(type==1){
      if(s[col].top()!=id)return 0;
      s[col].pop();
    }
  }
  return 1;
}
int main(){
  cin>>n;
  for(int i=0;i<n;i++)scanf("%lld%lld",&d[i].first,&d[i].second);
  sort(d,d+n);
  for(int i=1;i<=2*n;i++)nxt[i]=1e15;
  priority_queue<ll,vector<ll>,greater<ll> > Q;
  set<ll> S; S.insert(-1); S.insert(1e15);
  vector<bool> used(2*N,0);
  for(int i=0;i<n;i++){
    ll a=d[i].first,b=d[i].second;
    S.insert(b);
    while(!Q.empty()){
      ll x=Q.top();
      if(x>a)break;
      Q.pop();
      if(used[x])continue; used[x]=1;
      if(nxt[x]<1e15)Q.push(nxt[x]);
    }
    vector<ll> united; united.clear();
    while(!Q.empty()){
      ll x=Q.top();
      if(x>b)break;
      Q.pop();
      united.push_back(x);
    }
    ll siz=united.size();
    if(siz==0){
      Q.push(b);
      continue;
    }
    Q.push(united[0]);
    auto ir=S.lower_bound(b); ir--;
    nxt[b]=nxt[*ir];
    united.push_back(b);
    for(int j=1;j<=siz;j++){
      auto it=S.lower_bound(united[j]); it--;
      if(*it!=-1)nxt[*it]=united[j];
    }
    
    for(int j=0;j<siz;j++){
      make_edge(united[j],b);
    }
  }
  
  for(int i=0;i<n;i++){
    vis[d[i].first]=0;
    vis[d[i].second]=-1;
  }
  
  ll ans=1;
  for(int i=1;i<=2*n;i++){
    if(~vis[i])continue;
    (ans*=2)%=mod;
    ans*=dfs(i,0);
  }
  cout<<ans*solve()<<endl;
  return 0;
}

Submission Info

Submission Time
Task B - 港湾設備 (Port Facility)
User ynymxiaolongbao
Language C++14 (GCC 5.4.1)
Score 100
Code Size 2211 Byte
Status AC
Exec Time 2448 ms
Memory 241636 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:46:65: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   for(int i=0;i<n;i++)scanf("%lld%lld",&d[i].first,&d[i].second);
                                                                 ^

Judge Result

Set Name Subtask01 Subtask02 Subtask03 Subtask04
Score / Max Score 10 / 10 12 / 12 56 / 56 22 / 22
Status
AC × 28
AC × 48
AC × 83
AC × 118
Set Name Test Cases
Subtask01 sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt
Subtask02 sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, 02-16.txt, 02-17.txt, 02-18.txt, 02-19.txt, 02-20.txt
Subtask03 sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, 02-16.txt, 02-17.txt, 02-18.txt, 02-19.txt, 02-20.txt, 03-01.txt, 03-02.txt, 03-03.txt, 03-04.txt, 03-05.txt, 03-06.txt, 03-07.txt, 03-08.txt, 03-09.txt, 03-10.txt, 03-11.txt, 03-12.txt, 03-13.txt, 03-14.txt, 03-15.txt, 03-16.txt, 03-17.txt, 03-18.txt, 03-19.txt, 03-20.txt, 03-21.txt, 03-22.txt, 03-23.txt, 03-24.txt, 03-25.txt, 03-26.txt, 03-27.txt, 03-28.txt, 03-29.txt, 03-30.txt, 03-31.txt, 03-32.txt, 03-33.txt, 03-34.txt, 03-35.txt
Subtask04 sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, 02-16.txt, 02-17.txt, 02-18.txt, 02-19.txt, 02-20.txt, 03-01.txt, 03-02.txt, 03-03.txt, 03-04.txt, 03-05.txt, 03-06.txt, 03-07.txt, 03-08.txt, 03-09.txt, 03-10.txt, 03-11.txt, 03-12.txt, 03-13.txt, 03-14.txt, 03-15.txt, 03-16.txt, 03-17.txt, 03-18.txt, 03-19.txt, 03-20.txt, 03-21.txt, 03-22.txt, 03-23.txt, 03-24.txt, 03-25.txt, 03-26.txt, 03-27.txt, 03-28.txt, 03-29.txt, 03-30.txt, 03-31.txt, 03-32.txt, 03-33.txt, 03-34.txt, 03-35.txt, 04-01.txt, 04-02.txt, 04-03.txt, 04-04.txt, 04-05.txt, 04-06.txt, 04-07.txt, 04-08.txt, 04-09.txt, 04-10.txt, 04-11.txt, 04-12.txt, 04-13.txt, 04-14.txt, 04-15.txt, 04-16.txt, 04-17.txt, 04-18.txt, 04-19.txt, 04-20.txt, 04-21.txt, 04-22.txt, 04-23.txt, 04-24.txt, 04-25.txt, 04-26.txt, 04-27.txt, 04-28.txt, 04-29.txt, 04-30.txt, 04-31.txt, 04-32.txt, 04-33.txt, 04-34.txt, 04-35.txt
Case Name Status Exec Time Memory
01-01.txt AC 18 ms 51968 KB
01-02.txt AC 18 ms 51968 KB
01-03.txt AC 18 ms 51968 KB
01-04.txt AC 18 ms 51968 KB
01-05.txt AC 18 ms 51968 KB
01-06.txt AC 18 ms 51968 KB
01-07.txt AC 18 ms 51968 KB
01-08.txt AC 19 ms 51968 KB
01-09.txt AC 18 ms 51968 KB
01-10.txt AC 18 ms 51968 KB
01-11.txt AC 18 ms 51968 KB
01-12.txt AC 18 ms 51968 KB
01-13.txt AC 18 ms 51968 KB
01-14.txt AC 18 ms 51968 KB
01-15.txt AC 18 ms 51968 KB
01-16.txt AC 18 ms 51968 KB
01-17.txt AC 18 ms 51968 KB
01-18.txt AC 18 ms 51968 KB
01-19.txt AC 18 ms 51968 KB
01-20.txt AC 18 ms 51968 KB
01-21.txt AC 18 ms 51968 KB
01-22.txt AC 18 ms 51968 KB
01-23.txt AC 18 ms 51968 KB
01-24.txt AC 18 ms 51968 KB
02-01.txt AC 20 ms 52224 KB
02-02.txt AC 20 ms 52224 KB
02-03.txt AC 20 ms 52224 KB
02-04.txt AC 20 ms 52224 KB
02-05.txt AC 20 ms 52224 KB
02-06.txt AC 20 ms 52224 KB
02-07.txt AC 20 ms 52224 KB
02-08.txt AC 20 ms 52224 KB
02-09.txt AC 20 ms 52224 KB
02-10.txt AC 20 ms 52224 KB
02-11.txt AC 19 ms 52224 KB
02-12.txt AC 19 ms 52224 KB
02-13.txt AC 20 ms 52224 KB
02-14.txt AC 19 ms 52224 KB
02-15.txt AC 19 ms 52224 KB
02-16.txt AC 19 ms 52224 KB
02-17.txt AC 19 ms 52224 KB
02-18.txt AC 19 ms 52224 KB
02-19.txt AC 19 ms 52352 KB
02-20.txt AC 19 ms 52352 KB
03-01.txt AC 112 ms 70900 KB
03-02.txt AC 111 ms 71412 KB
03-03.txt AC 113 ms 70900 KB
03-04.txt AC 111 ms 70772 KB
03-05.txt AC 112 ms 70772 KB
03-06.txt AC 111 ms 71668 KB
03-07.txt AC 111 ms 70900 KB
03-08.txt AC 79 ms 68204 KB
03-09.txt AC 79 ms 69104 KB
03-10.txt AC 117 ms 71920 KB
03-11.txt AC 114 ms 71152 KB
03-12.txt AC 114 ms 71152 KB
03-13.txt AC 102 ms 70900 KB
03-14.txt AC 78 ms 67312 KB
03-15.txt AC 96 ms 69232 KB
03-16.txt AC 109 ms 69360 KB
03-17.txt AC 115 ms 69488 KB
03-18.txt AC 91 ms 70128 KB
03-19.txt AC 104 ms 70000 KB
03-20.txt AC 115 ms 71028 KB
03-21.txt AC 156 ms 71280 KB
03-22.txt AC 151 ms 71028 KB
03-23.txt AC 103 ms 71788 KB
03-24.txt AC 105 ms 72172 KB
03-25.txt AC 107 ms 71916 KB
03-26.txt AC 106 ms 71916 KB
03-27.txt AC 101 ms 71020 KB
03-28.txt AC 101 ms 70892 KB
03-29.txt AC 104 ms 72940 KB
03-30.txt AC 109 ms 72428 KB
03-31.txt AC 127 ms 72948 KB
03-32.txt AC 131 ms 73588 KB
03-33.txt AC 128 ms 73972 KB
03-34.txt AC 111 ms 70644 KB
03-35.txt AC 113 ms 71156 KB
04-01.txt AC 1093 ms 212064 KB
04-02.txt AC 1121 ms 210912 KB
04-03.txt AC 1150 ms 210144 KB
04-04.txt AC 1107 ms 211424 KB
04-05.txt AC 1097 ms 210784 KB
04-06.txt AC 1099 ms 210144 KB
04-07.txt AC 1104 ms 211680 KB
04-08.txt AC 850 ms 178152 KB
04-09.txt AC 864 ms 192224 KB
04-10.txt AC 1602 ms 223712 KB
04-11.txt AC 1568 ms 219872 KB
04-12.txt AC 1542 ms 219616 KB
04-13.txt AC 1326 ms 210404 KB
04-14.txt AC 866 ms 179176 KB
04-15.txt AC 944 ms 195264 KB
04-16.txt AC 1142 ms 205408 KB
04-17.txt AC 1122 ms 209376 KB
04-18.txt AC 946 ms 195932 KB
04-19.txt AC 1118 ms 206296 KB
04-20.txt AC 1081 ms 208732 KB
04-21.txt AC 2432 ms 218720 KB
04-22.txt AC 2448 ms 218976 KB
04-23.txt AC 1181 ms 222368 KB
04-24.txt AC 1225 ms 223264 KB
04-25.txt AC 1226 ms 223156 KB
04-26.txt AC 1165 ms 223156 KB
04-27.txt AC 1170 ms 227104 KB
04-28.txt AC 1185 ms 227232 KB
04-29.txt AC 1194 ms 226996 KB
04-30.txt AC 1174 ms 227984 KB
04-31.txt AC 1797 ms 241636 KB
04-32.txt AC 1772 ms 240484 KB
04-33.txt AC 1860 ms 240996 KB
04-34.txt AC 1148 ms 210404 KB
04-35.txt AC 1102 ms 211040 KB
sample-01.txt AC 18 ms 51968 KB
sample-02.txt AC 18 ms 51968 KB
sample-03.txt AC 18 ms 51968 KB
sample-04.txt AC 18 ms 51968 KB