AcWing 5321. 搞定
原题链接
中等
作者:
ywt51
,
2024-10-19 19:45:25
,
所有人可见
,
阅读 7
//模拟,突破口在木板高度是2000,记录每个木板高度出现的次数,以及能拼出来的高度的个数
#include <bits/stdc++.h>
using namespace std;
const int N = 2010, M = 4010;
int n, cnt[N], h[M];//cnt记录每个高度板子出现次数 h记录对应高度的板子的个数
int main() {
scanf("%d", &n);
for (int i = 0, x; i < n; ++ i) {
scanf("%d", &x);
cnt[x]++;
}
for (int i = 1; i <= 2000; ++ i)
for (int j = i; j <= 2000; ++ j)
if (i == j) h[i+j] += cnt[i]/2;
else h[i+j] += min(cnt[i], cnt[j]);
int len = 0, s = 0;
for (int i = 1; i <= 4000; ++ i)
if (h[i] > len) len = h[i], s = 1;
else if (h[i] == len) s++;
printf("%d %d", len, s);
return 0;
}