import
java.util.*;
public
class
Main {
public
static
void
main(String[] args) {
List<List<String>> arr =
new
ArrayList<>();
arr.add(Arrays.asList(
"Spain"
,
"England"
,
"3"
,
"0"
));
arr.add(Arrays.asList(
"England"
,
"France"
,
"1"
,
"1"
));
arr.add(Arrays.asList(
"Spain"
,
"France"
,
"0"
,
"2"
));
rankTeams(arr);
}
public
static
void
rankTeams(List<List<String>> arr) {
for
(
int
i =
0
; i < arr.size(); i++) {
if
(arr.get(i).get(
0
).equals(arr.get(i).get(
1
))) {
System.out.println(
"Invalid"
);
return
;
}
arr.get(i).set(
2
, Integer.toString(Integer.parseInt(arr.get(i).get(
2
))));
arr.get(i).set(
3
, Integer.toString(Integer.parseInt(arr.get(i).get(
3
))));
}
Map<String, List<Integer>> table =
new
HashMap<>();
for
(
int
i =
0
; i < arr.size(); i++) {
List<Integer> li1 =
new
ArrayList<>(Arrays.asList(
0
,
0
,
0
,
0
));
List<Integer> li2 =
new
ArrayList<>(Arrays.asList(
0
,
0
,
0
,
0
));
if
(table.containsKey(arr.get(i).get(
0
))) {
li1 = table.get(arr.get(i).get(
0
));
}
if
(table.containsKey(arr.get(i).get(
1
))) {
li2 = table.get(arr.get(i).get(
1
));
}
li1.set(
2
, li1.get(
2
) + Integer.parseInt(arr.get(i).get(
2
)));
li1.set(
3
, li1.get(
3
) + Integer.parseInt(arr.get(i).get(
3
)));
li2.set(
2
, li2.get(
2
) + Integer.parseInt(arr.get(i).get(
3
)));
li2.set(
3
, li2.get(
3
) + Integer.parseInt(arr.get(i).get(
2
)));
li1.set(
1
, li1.get(
2
) - li1.get(
3
));
li2.set(
1
, li2.get(
2
) - li2.get(
3
));
if
(arr.get(i).get(
2
).equals(arr.get(i).get(
3
))) {
li1.set(
0
, li1.get(
0
) +
1
);
li2.set(
0
, li2.get(
0
) +
1
);
}
else
if
(Integer.parseInt(arr.get(i).get(
2
)) > Integer.parseInt(arr.get(i).get(
3
))) {
li1.set(
0
, li1.get(
0
) +
3
);
}
else
if
(Integer.parseInt(arr.get(i).get(
2
)) > Integer.parseInt(arr.get(i).get(
3
))) {
li1.set(
0
, li1.get(
0
) +
3
);
}
else
{
li2.set(
0
, li2.get(
0
) +
3
);
}
table.put(arr.get(i).get(
0
), li1);
table.put(arr.get(i).get(
1
), li2);
}
List<List<String>> res =
new
ArrayList<>();
for
(Map.Entry<String, List<Integer>> entry : table.entrySet()) {
String key = entry.getKey();
int
val = entry.getValue().get(
0
);
res.add(Arrays.asList(key, Integer.toString(val)));
}
Collections.sort(res,
new
Comparator<List<String>>() {
public
int
compare(List<String> a, List<String> b) {
if
(Integer.parseInt(a.get(
1
)) == Integer.parseInt(b.get(
1
))) {
return
a.get(
0
).compareTo(b.get(
0
));
}
return
Integer.parseInt(b.get(
1
)) - Integer.parseInt(a.get(
1
));
}
});
for
(
int
i =
0
; i < res.size(); i++) {
System.out.println(res.get(i).get(
0
));
}
}
}