为什么lower_bound不能用

 #include<iostream>
#include<algorithm>
#include<set>
#include<vector>
using namespace std;
bool cmp(int a,int b)
{
    return a>b;
}
int main(void)
{
    int int_m,int_n,int_a[10000];
    cin>>int_n>>int_m;
    for(int i=0;i<int_n;i++)
        cin>>int_a[i];
    sort(int_a,int_a+int_n,cmp);
    while(int_m--)
    {
        int int_x;
        cin>>int_x;
        int int_p=lower_bound(int_a,int_a+int_n,int_x)-int_a;
        if(int_a[int_p]==int_x)
            cout<<int_p+1;
    }
    return 0;
}

为什么lower_bound找不到
比如
4 1
2 3 5 1
5就不行

5 1
1 3 3 3 1
3可以

https://zhidao.baidu.com/question/368141267505260324.html