Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- long long best[100010],n,xw,yw,xh,yh,r,prox[100010];
- pair<long long, long long> pl[100010];
- vector<long long> a;
- int main(){
- scanf("%lld", &n);
- scanf("%lld %lld %lld %lld", &xh , &yh, &xw, &yw);
- for(int i=0;i<n;i++) scanf("%lld %lld", &pl[i].first, &pl[i].second);
- sort(pl,pl+n);
- for(long long i=0;i<n;i++){
- if((pl[i].first<xh && pl[i].first<xw) || (pl[i].first>xh && pl[i].first>xw) || (pl[i].second<yh && pl[i].second<yw) || (pl[i].second>yh && pl[i].second>yw)) continue;
- a.push_back(pl[i].second);
- if((xh>xw && yh<yw) || (xh<xw && yh>yw)) a.back()*=-1;
- }
- if(a.size()==0){
- printf("0\n");
- return 0;
- }
- r=1;
- best[a.size()-1]=1;
- prox[a.size()-1]=0;
- for(long long i=a.size()-2;i>=0;i--){
- long long j=i+1;
- while(true){
- if(!j){
- best[i]=1;
- prox[i]=0;
- break;
- }
- if(a[i]<=a[j]){
- best[i]=1+best[j];
- prox[i]=j;
- break;
- }
- j=prox[j];
- }
- r=max(r,best[i]);
- }
- printf("%lld\n", r);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement