class Solution { public: int lengthOfLIS(vector<int>& nums) { int n=nums.size(); if(n==0) return 0; vector<int> maxv(n+1); maxv[0]=INT_MIN; maxv[1]=nums[0]; vector<int> lis(n); lis[0]=1; int nMaxLen=1; for(int i=1;i<n;i++) { int j; for(j=nMaxLen;j>=0;j--) { if(nums[i]>maxv[j]) { lis[i]=j+1; break; } } if(j==nMaxLen) { maxv[j+1]=nums[i]; nMaxLen=j+1; } else if(nums[i]<maxv[j+1]) { maxv[j+1]=nums[i]; } } for(auto &x: maxv) cout<<x<<" "; cout<<endl; for(auto &x:lis) cout<<x<<" "; cout<<endl; return nMaxLen; } };