使用优先队列,只维持队列中只有两个元素,对输入的数据做处理,只留下比当前top()小的数据其他的扔掉,然后输出top()即可
#include<stdio.h>
#include<math.h>
#include <queue>
#include<algorithm>
#include <iostream>
using namespace std;
int main()
{
int t;
cin>>t;
while (t--)
{
priority_queue < int >q;
int n;
cin>>n;
while(n--)
{
int num;
scanf("%d",&num);
if(q.empty())q.push(num);
else
{
if(q.size()<2)q.push(num);
else
{
if(num<q.top())
{
q.push(num);
q.pop();
}
}
}
}
printf("%d\n",q.top());
}
return 0;
}