RT,求助大佬,为什么我T2插排+二分优化会MLE,不应该呀
附代码:
#include<cstdio>
using namespace std;
const int N=1e5+5;
int n,w,a[N],x,crwz,fsx;
int twof(int l,int r){
if(l+1==r) return r;
int mid=(l+r)/2;
if(a[mid]<x) return twof(l,mid-1);
else if(a[mid]>x) return twof(mid+1,r);
else return mid+1;
}
int mmax(int x,int y){
return x>y?x:y;
}
int main(){
freopen("live.in","r",stdin);
freopen("live.out","w",stdout);
scanf("%d%d",&n,&w);
for(int i=1;i<=n;i++){
scanf("%d",&x);
if(i==1) a[1]=x;
else{
if(x>a[1]) crwz=1;
else if(x<a[i-1]) crwz=i;
else crwz=twof(1,i-1);
for(int j=i-1;j>=crwz;j--)
a[j+1]=a[j];
a[crwz]=x;
}
fsx=mmax(1,i*w/100);
printf("%d ",a[fsx]);
}
return 0;
}