多题目

给定n个数a,…,a。求n个数字当中第|到第r个数当中的中位数,我们可以用二分的经典思想来解决此问题。所谓中位数就是“个数中从小到大排序第n/2+1个数。

#include<bits/stdc++,h>

using namespace std

}const int MAXN-le3+10;

int n,m,alMAXN],maxn;

int main(){

cin>>n>>m/

for (int i=l;i<=n;i++)

cin>>a[i],

maxn=max(maxn,a[i]);

while(m--){

int lft,rgt;

cin>>lft>>rgt,int 1=1,r= while( ②)intmid= ③s1=0,s2=0;

for(int i=lft;i<=rgt;i++){

if(a[i]>mid)s1++;

if(a[i]<mid)s2++;

if(s1<=s2)④ =mid;

else ⑤=mid;

}cout<<l;

return 0;


第1题 单选

1处应填

A.

maxn

B.

maxn+1

C.

maxn-1

D.

n*2

第2题 单选

2处应填

A.

 l+r<n

B.

l<=r

C.

l<r

D.

l+1<r

第3题 单选

3处应填

A.

I+r

B.

(1+r)>>1

C.

r-]+1

D.

r-1

第4题 单选

4处应填

A.

1

B.

r

C.

lft

D.

rgt

第5题 单选

5处应填

A.

1

B.

r

C.

lft

D.

rgt

发表评论

登录 后再回复