#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
ll qaq[100005], sum1,n, cishu,a, b, ans, result, sum, x, i, j, flag;
struct nima
{
ll a[4000], num=1;
}qwq[4000];//包含一个数组和这个数组有几个元素
bool cmp(struct nima aa, struct nima b)
{
return aa.num < b.num;
}
int main()
{
ll zushu = 0;
cin >> n;
for (i = 1; i <= n; i++)
cin >> qaq[i];
sort(qaq+1, qaq + n+1);
for (i = 1; i <= n; i++)//用于检索
{
if (zushu == 0)
{
zushu++;
qwq[zushu].a[qwq[zushu].num] = qaq[i];
continue;
}
for (j = zushu; j >0; j--)//可能要立flag,重点在于从后往前插还是从前往后插
{
if (qwq[j].a[qwq[j].num] + 1 == qaq[i])//可以入队
{
qwq[j].a[qwq[j].num + 1] = qaq[i];
qwq[j].num++;
break;
}
if (j == 1)//找不到可以插入的地方
{
zushu++;//新建一个组插入
qwq[zushu].a[1] = qaq[i];
break;
}
}
}
sort(qwq+1,qwq+zushu+1,cmp);
cout << qwq[1].num;
return 0;
}
数组再开大就提示MLE了 求教为什么RE