📄 2970962_wa.cpp
字号:
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
struct node
{
int id, len;
int goal, goaled;
int pt, pl;
int won, tie, los;
char name[101];
};
node team[81];
struct Node
{
int a, b;
};
Node res[81][81];
int hold[81][81];
int n, m, maxlen;
bool cmp(node a,node b)
{
if(a.pt!=b.pt)
return a.pt>b.pt;
if(a.goal-a.goaled!=b.goal-b.goaled)
return a.goal-a.goaled>b.goal-b.goaled;
if(a.goal!=b.goal)
return a.goal>b.goal;
if(a.won!=b.won)
return a.won>b.won;
return a.id>b.id;
}
int get_id(char name[])
{
int i;
for(i = 0; i < n; i++)
if(strcmp(name,team[i].name)==0)
return i;
return -1;
}
void print()
{
int j;
putchar('+');
for(j = 0; j < maxlen; j++)
putchar('-');
putchar('+');
for(j = 0; j < n; j++)
printf("---+");
putchar('\n');
}
int min(int n1,int n2)
{
return n1 < n2 ? n1 : n2;
}
int lenth(int num)
{
return int(log10(num))+1;
}
int main()
{
int i, j;
int l, r, tmp;
int ida, idb;
char a[101], b[101], t[2];
int plmax, wmax, tmax, ptmax, lmax, totmax;
while(scanf("%d",&n),n)
{
maxlen = -1;
plmax = wmax = tmax = ptmax = lmax = totmax = -1;
memset(hold,0,sizeof(hold));
for(i = 0; i < n; i++)
{
scanf("%s",team[i].name);
tmp = strlen(team[i].name);
team[i].len = tmp;
if(tmp > maxlen)
maxlen = tmp;
team[i].id = i;
team[i].pt = team[i].pl = 0;
team[i].goal = team[i].goaled = 0;
team[i].won = team[i].los = team[i].tie = 0;
}
scanf("%d",&m);
for(i = 0; i < m; i++)
{
scanf("%s%s%s",a,t,b);
ida = get_id(a);
idb = get_id(b);
hold[ida][idb] = 1;
scanf("%d:%d",&l,&r);
res[ida][idb].a = l;
res[ida][idb].b = r;
team[ida].pl ++;
team[idb].pl ++;
team[ida].goal += l;
team[ida].goaled += r;
team[idb].goal += r;
team[idb].goaled += l;
if(l > r)
{
team[ida].pt += 3;
team[ida].won ++;
}
else
if(l == r)
{
team[ida].pt ++;
team[idb].pt ++;
team[ida].tie ++;
team[idb].tie ++;
}
else
{
team[idb].pt += 3;
team[idb].won ++;
team[ida].los ++;
}
}
puts("RESULTS:");
print();
putchar('|');
for(j = 0; j < maxlen; j++)
putchar(' ');
putchar('|');
for(j = 0; j < n; j++)
{
tmp = min(team[j].len,3);
for(i = 0; i < tmp; i++)
putchar(team[j].name[i]);
for(i = 0; i < 3-tmp; i++)
putchar(' ');
putchar('|');
}
putchar('\n');
print();
for(i = 0; i < n; i++)
{
putchar('|');
printf("%s",team[i].name);
for(j = 0; j < maxlen - team[i].len; j++)
putchar(' ');
putchar('|');
for(j = 0; j < n; j++)
{
if(i==j)
printf(" X ");
else
if(hold[i][j])
printf("%d:%d",res[i][j].a,res[i][j].b);
else
printf(" ");
putchar('|');
}
printf("\n");
print();
}
puts("\nSTANDINGS:\n----------");
sort(team,team+n,cmp);
for(i = 0; i < n; i++)
{
if(team[i].pl > plmax) plmax = team[i].pl;
if(team[i].pt > ptmax) ptmax = team[i].pt;
if(team[i].won > wmax) wmax = team[i].won;
if(team[i].los > lmax) lmax = team[i].los;
if(team[i].tie > tmax) tmax = team[i].tie;
if(lenth(team[i].goal)+lenth(team[i].goaled)+1 > totmax) totmax = lenth(team[i].goal)+lenth(team[i].goaled)+1;
}
plmax = lenth(plmax);
ptmax = lenth(ptmax);
lmax = lenth(lmax);
tmax = lenth(tmax);
wmax = lenth(wmax);
for(i = 0; i < n; i++)
{
if(n > 9 && i < 10)
putchar(' ');
printf("%d. %s",i+1,team[i].name);
for(j = 0; j < maxlen-team[i].len; j++)
putchar(' ');
putchar(' ');
tmp = lenth(team[i].pl);
for(j = 0; j < plmax-tmp; j++)
putchar(' ');
printf("%d",team[i].pl);
putchar(' ');
tmp = lenth(team[i].won);
for(j = 0; j < wmax-tmp; j++)
putchar(' ');
printf("%d",team[i].won);
putchar(' ');
tmp = lenth(team[i].tie);
for(j = 0; j < tmax-tmp; j++)
putchar(' ');
printf("%d",team[i].tie);
putchar(' ');
tmp = lenth(team[i].los);
for(j = 0; j < lmax-tmp; j++)
putchar(' ');
printf("%d",team[i].los);
putchar(' ');
tmp = lenth(team[i].goal)+lenth(team[i].goaled)+1;
for(j = 0; j < totmax-tmp; j++)
putchar(' ');
printf("%d:%d",team[i].goal,team[i].goaled);
putchar(' ');
tmp = lenth(team[i].pt);
for(j = 0; j < ptmax-tmp; j++)
putchar(' ');
printf("%d",team[i].pt);
putchar('\n');
}
putchar('\n');
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -