一道C++题目,高手来

来源:百度知道 编辑:UC知道 时间:2024/08/22 14:11:08
问题描述
八中信息组需要选一个组长。信息组一共有n个人,分别用1到n编号,其中m个人参与了投票。得票数过半(票数大于m div 2)的人将被选为组长。
输入数据将告知这m个人分别将票投给了谁,请统计出谁将担任八中信息组的组长。

输入数据
第一行两个数n和m。
第二行有m个数,这些数都是不超过n的正整数,表明这m个人的选择。

输出数据
输出将被选为组长的人。如果没有人的票数过半,请输出-1。

输入样例
7 4
7 7 2 7

输出样例
7

时间限制
各测试点1秒

内存限制
你的程序将被分配32MB的运行空间

数据规模
1<=n<=maxlongint
1<=m<=1 000 000

我需要源代码,高手们速度~~~~~~~~~~~~

#include<iostream>
using namespace std;
int main()
{
long n,m,temp;
cin >> n >> m;
long *a = new long[n];
for(long k = 0; k < n; k++)
a[k] = 0;
for(long i = 0; i < m; i++)
{
cin >> temp;
a[temp-1]++;
}
long max = 0;
for(long j = 0; j < n;j++)
if(a[j] > max)
{
max = a[j];
temp = j;
}
if(max > m/2)
cout << ++temp << endl;
else
cout << -1 << endl;
return 0;

}