2 条题解

  • 3
    @ 2025-2-26 21:12:13

    前后断开即可

    #include<bits/stdc++.h>
    using namespace std;
    int i,n,f0,m,f[1000001],shu[1000001],oooo;
    int find(int l,int r,int a) 
    {  int p;
    	while(r-l>1){
    		p=(r+l)/2;	
    		if(f[p]==a) return p;
            if(f[p]>a) r=p;
    			else l=p;
    	}
    	return r;
    }
    int main(){
    	freopen("listwo.in","r",stdin);
    	freopen("listwo.out","w",stdout);
        scanf("%d%d",&n,&m);
        for( i=1;i<=n;i++)cin>>shu[i];
        for(i=1;i<m;i++) 
        	if(shu[i]<=shu[m]){
        	if(shu[i]>f[f0]){
        		f0++;
        		f[f0]=shu[i];
    		}
    		else f[find(0,f0,shu[i])]=shu[i];
    	}
    	oooo=f0;
    	f0=0;
    	memset(f,0,sizeof(f));
    	for(i=m+1;i<=n;i++) 
    	if(shu[i]>=shu[m]){
        	if(shu[i]>f[f0]){
        		f0++;
        		f[f0]=shu[i];
    		}
    		else f[find(0,f0,shu[i])]=shu[i];
    	}
        printf("%d",f0+oooo+1);
        return 0;
    }
    
    

    信息

    ID
    472
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    126
    已通过
    19
    上传者