要Accepted这个题目要有一定的思维转换
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define MAXN 200010
int flag[MAXN], cnt[MAXN];
int main(int argc, char const *argv[])
{
#ifndef ONLINE_JUDGE
freopen("test.in", "r", stdin);
#endif
int cas, n, L, max_tag, rst;
scanf("%d", &cas);
for( ; cas; cas --) {
scanf("%d", &n); max_tag = rst = 0;
memset(flag, 0, sizeof(flag)); memset(cnt, 0, sizeof(cnt));
for(int i = 0; i < n; i ++) {
scanf("%d", &L); flag[L<<1] ++; max_tag = max(max_tag, L<<1);
}
for(int i = max_tag; i >= 0; i --) {
cnt[i] = cnt[i+1]+flag[i+1];
}
for(int i = max_tag; i >= 0; i -= 2) {
rst = max(rst, flag[i]+cnt[i>>1]+flag[i>>1]);
}
printf("%d\n", rst);
}
return 0;
}