求助大佬,看看二分哪里写错了
查看原帖
求助大佬,看看二分哪里写错了
363495
我爱杨帆楼主2020/8/4 17:36
#include<bits/stdc++.h>
using namespace std;int n=1,a[100005],f1[100005],b[100005],f2[100005];
int main()
{ 
  while(cin>>a[n])
  {
   n++;
  f1[n]=1;
  f2[n]=1;
  }	
  n--;
  f1[1]=a[1];
  f2[1]=a[1];
  int len1=1,len2=1;
  for(int i=2;i<=n;i++)
  {
  	int l=0,r=len2,mid;
  	if(a[i]<=f2[len2])
  	 {
  	 	len2++;
  	 	f2[len2]=a[i];
	 }
  	else 
  	{
  	 while(l<r)
	   {
	   	 mid=(l+r)/2;
	   	 if(f2[mid]<a[i]) r=mid;
		 else l=mid+1;	     
	   }
	   f2[l]=a[i];		
	}
  }
  cout<<len2<<endl;
  for(int i=2;i<=n;i++)
   { int l=1,r=len1,mid;
   	if(a[i]>f1[len1])
   	{ 
   	 len1++;
	 f1[len1]=a[i];		
	}
   	else 
   	{   while(l<r)
      { mid=(l+r)/2;
        if(a[i]>f1[mid]) 
		{	
		r=mid;
		}
        else l=mid+1;
	  }   	
   	f1[l]=min(f1[l],a[i]);
   }	
}	cout<<len1;
}
2020/8/4 17:36
加载中...