-
Notifications
You must be signed in to change notification settings - Fork 0
/
BASEBALL.c
128 lines (124 loc) · 2.61 KB
/
BASEBALL.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct {
char *name;
int win;
int draw;
int loss;
}Team;
char *strdupp(const char *str)
{
int n = strlen(str) + 1;
char *dup = malloc(n);
if (dup)
{
strcpy(dup, str);
}
return dup;
}
int readline(FILE *fp, char *str, int limit) {
int ch = 0;
int i = 0;
while ((ch = fgetc(fp)) != '\n'&&ch != EOF) {
if (i < limit)
str[i++] = ch;
}
str[i] = '\0';
return i;
}
double cal_win(Team *baseball) {
double sum = 0;
sum += baseball->draw;
sum += baseball->win;
sum += baseball->loss;
double rate = (baseball->win) / sum;
return rate;
}
Team *add_Team(char *name) {
char *a = strdupp(name);
Team *ptr= (Team *)malloc(sizeof(Team));
ptr->name=a;
ptr->draw = 0;
ptr->loss = 0;
ptr->win = 0;
return ptr;
}
int find_Team(Team *sTeam[],char *name) {
for (int i = 0; i < 8; i++) {
if (strcmp(sTeam[i]->name,name)==0)
return i;
}
return 30;
}
int main() {
char input[100];
readline(stdin, input, 100);
int iinput = atoi(input);
while (iinput != 0) {
Team *Teams[8];
for (int i = 0; i < 8; i++) {
char record[500];
readline(stdin, record, 600);
char *t_name = strtok(record, " ");
Teams[i]=add_Team(t_name);
Teams[i]->win = atoi(strtok(NULL, " "));
Teams[i]->draw = atoi(strtok(NULL, " "));
Teams[i]->loss = atoi(strtok(NULL, " "));
}
char myTeam[303];
readline(stdin, myTeam, 100);
char leftmatch[1000];
readline(stdin, leftmatch, 100);
int int_leftmatch = atoi(leftmatch);
char *leftmatchs[25];
for(int i=0;i<int_leftmatch;i++) {
leftmatchs[i]= (char *)malloc(sizeof(char *));
readline(stdin,leftmatchs[i],200);
}
for (int i = 0; i < int_leftmatch; i++) {
char *tmp1;
char *tmp2;
tmp1 = strtok(leftmatchs[i], " ");
tmp2 = strtok(NULL, " ");
if (tmp1 == myTeam || tmp2 == myTeam) {
Teams[find_Team(Teams, myTeam)]->win += 1;
leftmatchs[i] = NULL;
}
else {
int a = find_Team(Teams, tmp1);
int b = find_Team(Teams, tmp2);
Teams[a]->draw = Teams[a]->draw + 1;
Teams[b]->draw = Teams[b]->draw + 1;
}
}
double Teamrate[8];
for (int i = 0; i < 8; i++) {
Teamrate[i]=cal_win(Teams[i]);
}
double myTeam_rate = Teamrate[find_Team(Teams, myTeam)];
double temp = 0;
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8 - i; j++)
{
if (Teamrate[j] < Teamrate[j + 1])
{
temp = Teamrate[j];
Teamrate[j] = Teamrate[j + 1];
Teamrate[j + 1] = temp;
}
}
}
for (int i = 0; i < 8; i++) {
if (Teamrate[i] == myTeam_rate) {
if (i < 5) {
printf("YES\n");
}
else
printf("NO");
}
}
iinput -= 1;
}
}