题目
分析
这道题只得了90分,暂时还不知道问题出在哪里。先对整数列进行排序。如果n为奇数,取中间的数与整个数列进行大小比较,比中间的数大,则q++;比中间的数小,则p++;如果pq相等则中间的数就是中间数,否则输出-1。n为偶数的话同理,n=1时,直接输出该数字。
代码
#include<iostream>
using namespace std;
int main()
{
int a[10240];
int n;
int p=0, q = 0;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
for (int i = 0; i < n; i++)
{
for (int j = i; j < n; j++)
{
if (a[i] > a[j])
{
int temp;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
if (n == 1)
{
cout << a[0];
}
else if (n % 2 == 1)
{
for (int i = 0; i < n; i++)
{
if (a[i] > a[n / 2 + 1])
{
p++;
}
else if (a[i] < a[n / 2 + 1])
{
q++;
}
}
if (p == q)
{
cout << a[n / 2 + 1];
}
else
{
cout << -1;
}
}
else
{
for (int i = 0; i < n; i++)
{
if (a[i] > a[n / 2])
{
p++;
}
else if (a[i] < a[n / 2])
{
q++;
}
}
if (p == q)
{
cout << a[n / 2];
}
else
{
cout << -1;
}
}
//system("pause");
return 0;
}