#include "railroad.h"
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
bool try1(vector<int> s,vector<int> t){
int n = (int) s.size(),p=1;
set<pair<int,int>> x;
for(int i=0;i<n;i++)x.insert({s[i],t[i]});
for(int i=0;i<n;i++){
auto it=x.lower_bound({p,0});
while((i<n-1)&&it!=x.end()&&(x.lower_bound({(*it).second,0})==x.end())){
it++;
}
if(it==x.end())return 0;
p=(*it).second;
x.erase(it);
}
return 1;
}
ll try2(vector<int> s,vector<int> t,int m){
int n = (int) s.size(),p=1;
set<pair<int,int>> x;
for(int i=0;i<n;i++)x.insert({s[i],t[i]});
for(int i=0;i<n-1;i++){
auto it=x.lower_bound({p,0});
if(it==x.end())return 0;
p=(*it).second;
x.erase(it);
}
return p<=m;
}
long long plan_roller_coaster(std::vector<int> s, std::vector<int> t) {
int n = (int) s.size();
if(try1(s,t))return 0;
int m=0,tmp;
for(int i=1;i<n;i++){
if(t[i]>t[m]||(t[i]==t[m]&&s[i]>s[m]))m=i;
}
tmp=s[m];
s[m]=0;
if(try2(s,t,tmp))return 0;
return 1;
}