QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#601296 | #8332. Two in One | PeterQ# | WA | 1ms | 3612kb | C++14 | 1.2kb | 2024-09-29 22:09:11 | 2024-09-29 22:09:12 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
int t, n, max1, max2;
int a[100010];
int b[100010];
void clrb();
void doit()
{
max1 = 100001, max2 = 100002;
b[max1] = -1;
b[max2] = -1;
cin >> n;
for (int i = 1; i <= n; ++i)
{
cin >> a[i];
b[a[i]]++;
}
for (int i = 1; i <= n; ++i)
{
if (b[a[i]] > b[max1])
{
max2 = max1;
max1 = a[i];
}
else if (b[a[i]] > b[max2])
{
max2 = a[i];
}
}
if (max1 == max2)
{
cout << b[max1] << endl;
clrb();
return;
}
max1 = b[max1];
max2 = b[max2];
int ans = max(max1 | max2, max(max1 | max1, max2 | max2));
int tmp1 = max1 & max2;
int top = 21;
for (int i = 20; i >= 0; --i)
{
if ((1 << i) & tmp1)
{
top = (1 << i) - 1;
break;
}
}
cout << (max1 | max2 | top) << endl;
clrb();
}
void clrb()
{
for (int i = 1; i <= n; ++i)
{
b[a[i]] = 0;
}
}
signed main()
{
cin >> t;
while (t--)
{
doit();
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 3612kb
input:
1 7 1 2 3 4 3 2 1
output:
3
result:
ok 1 number(s): "3"
Test #2:
score: -100
Wrong Answer
time: 0ms
memory: 3608kb
input:
1 9 1 1 1 1 1 2 2 2 2
output:
5
result:
wrong answer 1st numbers differ - expected: '7', found: '5'