LIS (n*logn)

来源:互联网 发布:尺度最大的网络女主播 编辑:程序博客网 时间:2024/05/18 14:42
#include <iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=1e6+10;int cnt=0,n,m,p,a[maxn],dp[maxn],b[maxn];int main(){    while(~scanf("%d",&n))    {        for(int i=1; i<=n; i++)        {            scanf("%d%d",&m,&p);            a[m]=p;            dp[m]=1;        }        int l,r,mid,maxi=0,len=0;        for(int i=1; i<=n; i++)        {            int num=a[i];            l=1;            r=len;            while(l<=r)            {                mid=(r+l)>>1;                if(b[mid]<num)                    l=mid+1;                else                    r=mid-1;            }            b[l]=num;            dp[i]=l;            if(l>len)                len=l;            if(dp[i]>maxi)                maxi=dp[i];        }        int maxx=0;        for(int i=1; i<=n; i++)        {            maxx=max(maxx,dp[i]);        }       printf("%d\n",maxx);    }    return 0;}

0 0