📄 3987078_wa.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++;
}
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 + -