请看看代码哪里出问题了

问题遇到的现象和发生背景

img

//Richest Man
#include <iostream>
using namespace std;
int main()
{
    int N;
    long long M;
    cin >> N >> M;
    long long Ci[40];
    long long cc[40];
    long long sum=0;
    long long answer = 0;
    for (int i = 0; i < N; i++)
    {
        cin >> Ci[i];
        sum = sum + Ci[i];
    }
    if (sum <= M) 
    { 
        cout << sum << endl;
        return 0;
    }
    else
    {

        for (int i = 0; i < N - 1; i++)
        {
            for (int j = 0; j < N - 1 - i; j++)
            {
                if (Ci[j] < Ci[j + 1])
                {
                    long long temp = Ci[j];
                    Ci[j] = Ci[j + 1];
                    Ci[j + 1] = temp;
                }
            }
        }//冒泡排序

        for (int i = 0; i < N; i++)
        {
            long long c = M - Ci[i];
            int d = 0;
            int j = i;
            while (j < N)
            {
                for (int j = d + 1; j < N; j++)
                {
                    if (Ci[j] - c < 0)
                    {
                        d = j;
                        c = c - Ci[j];
                        break;
                    }
                    else if (Ci[j] - c == 0)
                    {
                        cout << M;
                        return 0;
                    }
                }
            }
            cc[i] = c;
        }
        long long cmin = cc[0];
        for (int i = 0; i < N-1; i++)
        {
            if (cmin > cc[i+1]) { cmin = cc[i + 1]; }
        }
        cout << M - cmin << endl;
        return 0;


    }

}

运行结果及报错内容

运行结果时间超限

我的解答思路和尝试过的方法
我想要达到的结果

数据范围提示是啥,你的数组大小是不是定义的小了