//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;
}
}
运行结果时间超限
数据范围提示是啥,你的数组大小是不是定义的小了