⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pku2692.cpp

📁 这是ACM 方面的资料 是PKU的 北京大学的出来的
💻 CPP
字号:
#include <stdio.h>
#include <algorithm>
using namespace std;

int Fail[21];
int N;
char Name[21][90];
int cnt;

class Vote
{
	private:
	
	int id[20];
	
	public:
		
	void In(int a[])
	{
		int i;
		for (i = 0; i < N; i++)
		{
			id[i] = a[i];
		}
	}

	int GetID()
	{
		int i;
		for (i = 0; i < N; i++)
		{
			if (Fail[id[i]] == 0)
			{
				return id[i];
				break;
			}
		}
	}
};

Vote v[1100];

typedef struct 
{
	int n, id;
} Node;

Node nd[21];

bool cp(Node a, Node b)
{
	return a.n > b.n;
}

int Calc()
{
	int i, e;
	for (i = 0; i < 20; i++)
	{
		nd[i].n = 0;
		nd[i].id = i;
	}
	for (i = 0; i < cnt; i++)
	{
		nd[v[i].GetID()].n++;
	}
	sort(nd, nd + N, cp);

	e = N - 1;
	while (nd[e].n == 0)
	{
		e--;
	}
	if (nd[0].n * 2 > cnt)
	{
		printf("%s\n", Name[nd[0].id]);
		return 1;
	}
	if (nd[0].n == nd[e].n)
	{
		for (i = 0; i <= e; i++)
		{
			printf("%s\n", Name[nd[i].id]);
		}
		return 1;
	}
	for (i = e; i > 0; i--)
	{
		if (nd[i].n == nd[e].n)
		{
			Fail[nd[i].id] = 1;
		}
		else
		{
			break;
		}
	}
	return 0;
}

int main()
{
	int i;
	int a[21];
	scanf("%d\n", &N);
	for (i = 0; i < N; i++)
	{
		gets(Name[i]);
	}
	cnt = 0;
	while (scanf("%d", &a[0]) != -1)
	{
		a[0]--;
		for (i = 1; i < N; i++)
		{
			scanf("%d", &a[i]);
			a[i]--;
		}
		v[cnt].In(a);
		cnt++;
	}
	memset(Fail, 0, sizeof(Fail));
	for (i = 0; i < N; i++)
	{
		if (Calc())
		{
			break;
		}
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -