Task: | Building Teams |
Sender: | clovis |
Submission time: | 2024-09-09 17:19:48 +0300 |
Language: | Python3 (CPython3) |
Status: | READY |
Result: | TIME LIMIT EXCEEDED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.02 s | details |
#2 | ACCEPTED | 0.02 s | details |
#3 | ACCEPTED | 0.02 s | details |
#4 | ACCEPTED | 0.02 s | details |
#5 | ACCEPTED | 0.02 s | details |
#6 | TIME LIMIT EXCEEDED | -- | details |
#7 | TIME LIMIT EXCEEDED | -- | details |
#8 | TIME LIMIT EXCEEDED | -- | details |
#9 | TIME LIMIT EXCEEDED | -- | details |
#10 | TIME LIMIT EXCEEDED | -- | details |
#11 | ACCEPTED | 0.02 s | details |
#12 | ACCEPTED | 0.02 s | details |
Code
import sys # print(sys.getrecursionlimit()) sys.setrecursionlimit(10**5) inp1 = input().split() numPupils = int(inp1[0]) numFriendships = int(inp1[1]) friendshipList = [] def whetherValid(group1, group2): group1Set = set(group1) group2Set = set(group2) for friendship in friendshipList: if friendship[0] in group1Set and friendship[1] in group1Set: return False if friendship[0] in group2Set and friendship[1] in group2Set: return False return True def get_combinations(index, group1, group2): # base case # if index reaches total number of pupils, then no more pupils to sort. Check if both group1 and group2 are valid. If yes then print out if possibleGroup != []: return if index == numPupils + 1: if whetherValid(group1, group2): # print("group1:", group1) # print("group2:", group2) possibleGroup.append(group1) possibleGroup.append(group2) whetherPossible[0] = True return # print(f"index: {index}, group1: {group1}, group2: {group2}") # reduction step # 2 choices # 1. don't add the pupil to group1, add to group2 and increment index # 2. add the pupil to group1, don't add to group2, increment index get_combinations(index + 1, group1, group2 + [index]) get_combinations(index + 1, group1 + [index], group2) if numPupils == 1: print("1") else: for i in range(numFriendships): inp2 = input().split() friendshipList.append([int(inp2[0]), int(inp2[1])]) whetherPossible = [False] possibleGroup = [] get_combinations(1, [], []) if whetherPossible[0]: group1 = possibleGroup[0] group2 = possibleGroup[1] solution = "" for i in range(1, numPupils + 1): group1Set = set(group1) if i in group1Set: solution += "1 " else: solution += "2 " print(solution[:-1]) else: print("IMPOSSIBLE")
Test details
Test 1
Verdict: ACCEPTED
input |
---|
10 20 3 4 8 10 3 7 1 8 ... |
correct output |
---|
1 1 1 2 2 1 2 2 2 1 |
user output |
---|
2 2 2 1 1 2 1 1 1 2 |
Test 2
Verdict: ACCEPTED
input |
---|
10 20 1 3 8 10 2 4 6 8 ... |
correct output |
---|
1 1 2 2 1 1 1 2 1 1 |
user output |
---|
2 2 1 1 2 2 2 1 2 2 |
Test 3
Verdict: ACCEPTED
input |
---|
10 20 7 10 3 10 9 10 2 10 ... |
correct output |
---|
1 2 2 1 1 1 2 1 2 1 |
user output |
---|
2 1 1 2 2 2 1 2 1 2 |
Test 4
Verdict: ACCEPTED
input |
---|
10 20 2 4 2 10 7 10 4 6 ... |
correct output |
---|
1 2 1 1 2 2 2 1 2 1 |
user output |
---|
2 1 2 2 1 1 1 2 1 2 |
Test 5
Verdict: ACCEPTED
input |
---|
10 20 3 5 8 10 9 10 1 8 ... |
correct output |
---|
IMPOSSIBLE |
user output |
---|
IMPOSSIBLE |
Test 6
Verdict: TIME LIMIT EXCEEDED
input |
---|
100000 200000 47355 96505 90709 92058 735 80715 91802 94265 ... |
correct output |
---|
1 2 2 1 2 1 1 1 2 2 1 2 1 1 1 ... |
user output |
---|
(empty) |
Test 7
Verdict: TIME LIMIT EXCEEDED
input |
---|
100000 200000 59991 95794 95150 96051 78453 94730 90411 95523 ... |
correct output |
---|
1 1 1 2 2 1 1 2 1 2 1 2 2 2 1 ... |
user output |
---|
(empty) |
Test 8
Verdict: TIME LIMIT EXCEEDED
input |
---|
100000 200000 89827 96402 65137 86792 80965 94708 19479 48078 ... |
correct output |
---|
1 2 1 1 2 1 2 2 2 1 2 1 1 2 1 ... |
user output |
---|
(empty) |
Test 9
Verdict: TIME LIMIT EXCEEDED
input |
---|
100000 200000 72952 83723 66197 70052 2949 52160 55753 95651 ... |
correct output |
---|
1 1 2 2 2 1 1 2 2 2 2 2 1 2 1 ... |
user output |
---|
(empty) |
Test 10
Verdict: TIME LIMIT EXCEEDED
input |
---|
100000 200000 38942 96755 70049 82663 7746 72732 87819 99029 ... |
correct output |
---|
IMPOSSIBLE |
user output |
---|
(empty) |
Test 11
Verdict: ACCEPTED
input |
---|
5 4 1 2 3 4 4 5 5 3 |
correct output |
---|
IMPOSSIBLE |
user output |
---|
IMPOSSIBLE |
Test 12
Verdict: ACCEPTED
input |
---|
4 5 1 2 1 4 2 3 2 4 ... |
correct output |
---|
IMPOSSIBLE |
user output |
---|
IMPOSSIBLE |