题目链接
复杂度N+M
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=100010;
struct Node{
int v;
int index;
}node[N];
int a[N],ans[N];
int n,m;
bool cmp(Node a,Node b){
return a.v<b.v;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>node[i].v;
node[i].index=i;
}
for(int i=1;i<=m;i++){
cin>>a[i];
}
sort(node+1,node+n+1,cmp);
sort(a+1,a+m+1);
int p=1;
for(int i=1;i<=n;i++){
while(p<=m&&node[i].v>=a[p]){
ans[node[i].index]++;
p++;
}
}
for(int i=1;i<=n;i++){
cout<<ans[i]<<endl;
}
}