选举步骤1 m个城市,每个城市中最高票的选手晋级,得一分(票数相同选下标最小的)
步骤1结束后,得到m个晋级分,再排序,取最高分的为winner(票数相同选下标最小的)
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <iostream>
#include <queue>
#include <map>
#include <set>
#include <vector>
using namespace std;
const __int64 maxn = 100005;
struct node
{
__int64 x,num;
};
node vis[105];
__int64 cmp(node a,node b)
{
if (a.x!=b.x)
return a.x>b.x;
else
return a.num<b.num;
}
__int64 ans[105];
int main()
{
__int64 maxx;
__int64 i,j,n,m;
scanf("%I64d%I64d",&n,&m);
__int64 ok=0;
for (i=1;i<=m;i++)
{
memset(vis,0,sizeof(vis));
for (j=1;j<=n;j++)
{
scanf("%I64d",&vis[j].x);
vis[j].num=j;
}
sort(vis+1,vis+1+n,cmp);
maxx=vis[1].num;
ans[++ok]=maxx;
}
__int64 tm[105];
memset(tm,0,sizeof(tm));
for (i=1;i<=ok;i++)
{
tm[ans[i]]++;
}
memset(vis,0,sizeof(vis));
for(i=1;i<=n;i++)
{
vis[i].num=i;
vis[i].x=tm[i];
}
sort(vis+1,vis+n+1,cmp);
printf("%I64d\n",vis[1].num);
return 0;
}