forked from mpfeifer1/Kattis
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathopensource.py
72 lines (56 loc) · 1.56 KB
/
opensource.py
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
import fileinput
def process(data):
# Find duplicate people
projects = []
for line in data:
if line.isupper():
projects.append([line])
else:
projects[-1].append(line)
actualprojects = []
# Ignore duplicate people
for project in projects:
users = set()
for person in project[1:]:
users.add(person)
actualprojects.append([project[0]])
actualprojects[-1].extend(users)
projects = actualprojects
# Find users to skip
users = set()
skipusers = set()
for project in projects:
for user in project[1:]:
if user in users:
skipusers.add(user)
users.add(user)
# Remove users to skip
actualprojects = []
for project in projects:
actualprojects.append([project[0]])
for user in project[1:]:
if user not in skipusers:
actualprojects[-1].append(user)
# Switch to list of service, users
projects = actualprojects
projects = [[len(i)-1, i[0]] for i in projects]
# Sort all the projects
projects.sort(key=lambda k: (-k[0], k[1]))
# Print each value
for i in projects:
print(i[1], i[0])
return
def main():
data = []
for line in fileinput.input():
line = line[:-1]
if line == "0":
return
if line == "1":
# Process the case, then clear stuff
process(data)
data = []
else:
data.append(line)
if __name__ == "__main__":
main()