python 70pts WA1,2,5,12求调
查看原帖
python 70pts WA1,2,5,12求调
397312
HarveyZ楼主2024/9/28 21:51
m,n,p = map(int,input().split())
a = dict()
flag = dict()
kill = set()
for i in range(m):
    name = input().strip()
    a[name] = []
    flag[name] = -1
for i in range(p):
    s = input().split(": ")
    if s[1] == "I am not guilty.":
        a[s[0]].append("ng")
    elif s[1] == "I am guilty.":
        a[s[0]].append("g")
    elif " ".join(s[1].split()[1:]) == "is guilty." and s[1].split()[0] in a.keys():
        a[s[0]].append(s[1].split()[0]+" og")
    elif " ".join(s[1].split()[1:]) == "is not guilty." and s[1].split()[0] in a.keys():
        a[s[0]].append(s[1].split()[0]+" ong")
    elif " ".join(s[1].split()[:-1]) == "Today is" and s[1].split()[-1] in ["Monday.","Tuesday.","Wednesday.","Thursday.","Friday.","Saturday.","Sunday."]:
        a[s[0]].append(s[1].split()[-1][:-1])
jump = 0
for date in ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]:
    for killer in a.keys():
        for i in flag.keys():
            flag[i] = -1
        for m,says in a.items():
            for say in says:
                if say == "g":
                    if m == killer:
                        if flag[m] == -1:
                            flag[m] = 1
                        elif flag[m] == 0:
                            jump = 1
                            break
                    else:
                        if flag[m] == -1:
                            flag[m] = 0
                        elif flag[m] == 1:
                            jump = 1
                            break
                elif say == "ng":
                    if m != killer:
                        if flag[m] == -1:
                            flag[m] = 1
                        elif flag[m] == 0:
                            jump = 1
                            break
                    else:
                        if flag[m] == -1:
                            flag[m] = 0
                        elif flag[m] == 1:
                            jump = 1
                            break
                elif "og" in say:
                    if say.split()[0] == killer:
                        if flag[m] == -1:
                            flag[m] = 1
                        elif flag[m] == 0:
                            jump = 1
                            break
                    else:
                        if flag[m] == -1:
                            flag[m] = 0
                        elif flag[m] == 1:
                            jump = 1
                            break
                elif "ong" in say:
                    if say.split()[0] != killer:
                        if flag[m] == -1:
                            flag[m] = 1
                        elif flag[m] == 0:
                            jump = 1
                            break
                    else:
                        if flag[m] == -1:
                            flag[m] = 0
                        elif flag[m] == 1:
                            jump = 1
                            break
                else:
                    if say == date:
                        if flag[m] == -1:
                            flag[m] = 1
                        elif flag[m] == 0:
                            jump = 1
                            break
                    else:
                        if flag[m] == -1:
                            flag[m] = 0
                        elif flag[m] == 1:
                            jump = 1
                            break
        if jump == 1:
            jump = 0
            continue
        else:
            min_ = 0
            max_ = 0
            for i in flag.values():
                if i == 0:
                    min_ += 1
                    max_ += 1
                if i == -1:
                    max_ += 1
            if min_<=n<=max_:
                kill.add(killer)
if len(kill) > 1:
    print("Cannot Determine")
elif len(kill) == 1:
    print(kill.pop())
else:
    print("Impossible")
2024/9/28 21:51
加载中...