70分求调
查看原帖
70分求调
750689
CNzzc楼主2024/8/9 09:35
#include<bits/stdc++.h>
#define int long long
using namespace std;

const int MAXN = 1e5 + 40;
int f[MAXN], n, ans = 1e9, siz[MAXN], top, q[MAXN];
map<int, vector<int>>v;
signed main() {
	scanf("%lld", &n);
	for (int i = 1; i <= n; i++) scanf("%lld", &f[i]);
	sort(f + 1, f + n + 1);
	for (int i = 1; i <= n; i++) {
		if (v[f[i] - 1].empty()) v[f[i]].push_back(++top), siz[top]++;
		else {
			int t = v[f[i] - 1].back();
			v[f[i] - 1].pop_back();
			v[f[i]].push_back(t);
			siz[t]++;
		}
	}
	for (int i = 1; i <= top; i++) ans = min(ans, siz[i]);
	printf("%lld\n", ans);
	return 0;
}
2024/8/9 09:35
加载中...