Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- pair<int,int> lis(vector<int>&v,vector<int>&l){
- int n=v.size();
- if(n==0)
- return {0,-1};
- vector<int>dp(n,1);
- dp[0]=1;
- int s=1;
- int e=0;
- for(int i=1;i<n;i++){
- for(int j=0;j<i;j++){
- if(v[j]<v[i]&&dp[j]+1>dp[i]){
- dp[i]=dp[j]+1;
- l[i]=j;
- }
- }
- if(s<dp[i]){
- s=dp[i];
- e=i;
- }
- }
- return {s,e};
- }
- void print(vector<int>&v,vector<int>&p,int e){
- while(e>=0){
- cout<<v[e]<<" ";
- e=p[e];
- }
- }
- int main(){
- int n;
- cin>>n;
- vector<int>v;
- for(int i=0;i<n;i++){
- int c;
- cin>>c;
- v.push_back(c);
- }
- vector<int>l(n,-1);
- int s=lis(v,l).first;
- int e=lis(v,l).second;
- cout<<s<<endl;
- print(v,l,e);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement