一道C++题目,高手来

问题描述八中信息组需要选一个组长。信息组一共有n个人,分别用1到n编号,其中m个人参与了投票。得票数过半(票数大于mdiv2)的人将被选为组长。输入数据将告知这m个人分别... 问题描述
八中信息组需要选一个组长。信息组一共有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

我需要源代码,高手们速度~~~~~~~~~~~~
展开
 我来答
xrayron
2009-03-29 · TA获得超过1052个赞
知道大有可为答主
回答量:781
采纳率:0%
帮助的人:1011万
展开全部
#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;

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式