C++问解啊好难好难

请你找出小A能够购买的最贵的一件礼品(价格)。 输入格式 第一行一个整数N,为商品的种类。 第二行N个正整数,为各类商品的价格。 第三行一个整数M,为小A的零钱。 输出格式 一行一个整数,为小A能够购买的最贵礼品的价格。 样例输入 5 3 1 5 2 4 6 样例输出 5 ?

解决方式有多种。
1、对第二行输入的数据进行排序。然后遍历排序后的数组,遍历过程中找到第一个大于第三行输入的数的下标。输出数组中下标-1的内容。

就是从数组中找小于等于M的最大数

#include <iostream>
using namespace std;

int main()
{
    int N,M;
    cin >> N;
    int *Narr = new int[N];
    for(int i=0;i<N;i++)
    {
        cin >> Narr[i];
    }
    cin >> M ;

    int max=0;
    for(int i=0;i<N;i++)
    {
        if(Narr[i]<=M &&Narr[i]>max)
        {
            max=Narr[i];
        }
    }

    cout << max << endl;
    return 0;
}