求助
查看原帖
求助
687360
lzy2011rp<<=亿楼主2022/5/17 15:17
#include <iostream>
using namespace std;
int h=1,t=0,a[200000],q,k,x,b[200000],o,t1=1;
int serch1(int p)
{
	int l=1,r=t,mid,ans=-1;
	while(l<=r){
		mid=(l+r)/2;
		if(a[mid]==p){
			ans=mid;
			r=mid-1;
		}
		else if(a[mid]>p){
			r=mid-1;
		}
		else l=mid+1;
	}
	return ans;
}
int serch2(int p)
{
	int l=1,r=t,mid,ans=-1;
	while(l<=r){
		mid=(l+r)/2;
		if(a[mid]==p){
			ans=mid;
			l=mid+1;
		}
		else if(a[mid]>p){
			r=mid-1;
		}
		else l=mid+1;
	}
	return ans;
}
int serch3(int p)
{
	int l=1,r=t,mid,ans=-1;
	while(l<=r){
		mid=(l+r)/2;
		if(a[mid]<p){
			ans=mid+1;
			l=mid+1;
		}
		else r=mid-1;
	}
	return ans;
}
int main()
{
	cin>>q;
	for(int i=1;i<=q;i++){
		cin>>k>>x;
		if(k==1){
			o=serch1(x)+1;
		 	b[i]=o;
		}
		else if(k==2){
			//if(t<x) b[i]=2147483647;
			 b[i]=a[x];
		}else if(k==3){
			o=serch1(x);
			if(o==-1||o-1<1){
				b[i]=-2147483647;
			}
			else b[i]=a[o-1]; 
		}
		else if(k==4){
			b[i]=serch2(x);
			if(o==-1||o+1>t){
				b[i]=2147483647;
			}
			else b[i]=a[o+1];  
		}
		else if(k==5){
			t++;
			t1++;
			a[t]=x;
			x=t;
			while(x>1&&a[x]<a[x-1]){
				swap(a[x],a[x-1]);
			}
		} 
	}
	for(int i=t1;i<=q;i++){
		cout<<b[i]<<endl;
	}
	return 0;
} 
2022/5/17 15:17
加载中...