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

📄 3987090_wa.cc

📁 北大大牛代码 1240道题的原代码 超级权威
💻 CC
字号:
#include <stdio.h>
#include <assert.h>
#include <algorithm>

using namespace std;

struct node
{
	char name[10];
	int ac[10];
	int tm[10];
	int pe[10];

	void init()
	{
		memset(pe, 0, sizeof(pe));
		memset(tm, 0, sizeof(tm));
		memset(ac, 0, sizeof(ac));
	}

	int tot()
	{
		int ret (0);

		for (int i = 1; i <= 8; i++)
		{
			ret += ac[i];
		}
		return ret;
	}

	int tim()
	{
		int ret (0);

		for (int i = 1; i <= 8; i++)
		{
			ret += tm[i] + ac[i] * pe[i];
		}
		return ret;
	}

}team[20];

bool cmp(node a, node b)
{
	int na = a.tot();
	int nb = b.tot();

	if (na != nb)
		return na > nb;

	int ta = a.tim();
	int tb = b.tim();

	if (ta != tb)
		return ta < tb;
	return strcmp(a.name, b.name) < 0;
}

int n, k, m;

int getId(char str[])
{
	for (int i = 0; i < n; i++)
	{
		if (strcmp(str, team[i].name) == 0)
		{
			return i;
		}
	}
	assert(false);
	return -1;
}

int main()
{
	int cas, i;
	int tid, t;
	char s[5], name[10];

	scanf("%d", &cas);
	while (cas--)
	{
		scanf("%d", &n);
		for (i = 0; i < n; i++)
		{
			scanf("%s", team[i].name);
			team[i].init();
		}
		scanf("%d%d", &k, &m);
		for (i = 0; i < m; i++)
		{
			scanf("%d%d%s%s", &tid, &t, s, name);
			int id = getId(name);
			if (team[id].ac[tid] == 1)
				continue;
			if (s[0] == 'N')
			{
				team[id].pe[tid] += 20;
				continue;
			}
			team[id].ac[tid] = 1;
			team[id].tm[tid] = t;
		}
		sort(team, team + n, cmp);
		int rank = 0;
		int tn = -1, tt = -1;

		for (i = 0; i < n; i++)
		{
			if (team[i].tot() != tn || team[i].tim() != tt)
			{
				tn = team[i].tot();
				tt = team[i].tim();
				rank = i + 1;
			}
			printf("%2d. %-8s %d %4d\n", rank, team[i].name, team[i].tot(), team[i].tim());
		}
		puts("");
	}
	return 0;
}

⌨️ 快捷键说明

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