1 条题解

  • 0
    @ 2022-10-23 21:17:18
    #include<bits/stdc++.h>
    using namespace std;
    int n,pos,a[100050],ps[100050],p=1;
    int ans;
    int main()
    {
    	cin>>n>>pos;
    	for(int i=1;i<=n;i++)
    		scanf("%d",&a[i]);
    	ps[1]=a[1];
    	for(int i=2;i<pos;i++)
    	{
    		if(a[i]>=ps[p])ps[++p]=a[i];
    		else{
    			int l=1,r=p,mid=p>>1;
    			while(l!=r)
    			{
    				if(ps[mid]<=a[i])l=mid+1;
    				else r=mid;
    				mid=(l+r)>>1;
    			}
    			ps[l]=a[i];
    		}
    	}
    	if(ps[p]<=a[pos])
    	{
    		p++;
    	}
    	else{
    		a[pos]=1e9+1;
    	}
    	ans=pos-p;
    	ps[1]=a[pos];
    	p=1;
    	for(int i=pos+1;i<=n;i++)
    	{
    		if(a[i]<=ps[p])ps[++p]=a[i];
    		else{
    			int l=1,r=p,mid=p>>1;
    			while(l!=r)
    			{
    				if(ps[mid]>=a[i])l=mid+1;
    				else r=mid;
    				mid=(l+r)>>1;
    			}
    			ps[l]=a[i];
    		}
    	}
    	ans+=(n-pos+1)-p;
    	cout<<ans;
    }
    
    • 1

    信息

    ID
    784
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    (无)
    递交数
    103
    已通过
    18
    上传者