Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std ;
- #define mx 1000
- #define pii pair<int,int>
- vector<pii > v1,v2,v3,v4 ;
- int n ;
- int dp[mx],dir[mx];
- int longest(int u)
- {
- if(dp[u]!=-1) return dp[u];
- int maxi=0;
- for(int v=u+1;v<=n;v++)
- {
- if(v1[v].second>v1[u].second and v1[v].second>v1[u].second)
- {
- if(longest(v)>maxi)
- {
- maxi=longest(v);
- dir[u]=v;
- }
- }
- }
- dp[u]=1+maxi;
- return dp[u];
- }
- int main()
- {
- cin>>n;
- v1.push_back(pii(-10000,-10000));
- v3.push_back(pii(-10000,-10000));
- for(int i=1 ; i<=n ;i++)
- {
- int x,y; cin>>x>>y ;
- v1.push_back(pii(x,y));
- }
- sort(v1.begin(),v1.end());
- //for(int i = 1 ; i<=n ; i++)cout<<v1[i].first<<" "<<v1[i].second<<endl;
- memset(dp,-1,sizeof dp);
- memset(dir,-1,sizeof dir);
- int LIS=0,start;
- for(int i=1;i<=n;i++)
- {
- printf("",longest(i));
- if(longest(i)>LIS)
- {
- LIS=longest(i);
- start=i;
- }
- }
- cout<<LIS<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement