题目
CF1399C Boats Competition
代码
#include <bits/stdc++.h>
using namespace std;
const int maxn=155;
int n,mx;
int a[maxn],cnt[maxn]; //cnt[i]表示等于i的元素的个数
inline void solve()
{
int ans=0;
for(int s=(mx<<1);s>=2;s--) //暴力枚举
{
int c=0;
for(int i=1;i<(s+1)/2;i++) c+=min(cnt[i],cnt[s-i]); //此处(s+1)/2等价于s/2向上取整
if(!(s%2)) c+=cnt[s/2]/2;
ans=max(ans,c);
}
printf("%d\n",ans);
}
int main()
{
int T; scanf("%d",&T);
while(T--)
{
scanf("%d",&n); memset(cnt,0,sizeof(cnt)); mx=0; //初始化
for(int i=1;i<=n;i++) scanf("%d",&a[i]),cnt[a[i]]++,mx=max(mx,a[i]);
solve();
}
return 0;
}