题目链接
先按照智商大小排序然后,写一个类似于lower_bound二分函数去找
这里有以前写的二分
#include<bits/stdc++.h>
using namespace std;
#define rep(a,b) for(int i=(a);i<(b);i++)
const int maxn = 1e6+6;
struct node{
int x,id;
bool operator<(const node&tmp) const{
return x<tmp.x;
}
}a[maxn];
int n;
int bs(int key){
int l=1,r=n;
while(l<=r){
int mid=l+r>>1;
if(key>a[mid].x)l=mid+1;
else r=mid-1;
}
return l;
}
int main(){
scanf("%d",&n);
rep(1,n+1){
scanf("%d",&a[i].x);
a[i].id=i;
}
sort(a+1,a+1+n);
int x;
while(~scanf("%d",&x)){
printf("%d\n",bs(x));
}
return 0;
}