①共有n道题,n道题依次进入阅卷序列中,为了保证试题批阅的准确性,每道题都需要两次批改,第一次批改完成的试题会加入到阅卷序列尾部,直至两次批改完成;
②若第一次批改和第二次批改分数相差2分及以上,则该题需要第三次批改,该题重新加入到目前阅卷序列尾部,第三次批改与第二次批改分数继续比较,以此列推;反之表示该题评分完成
③阅卷序列ans中的数据由字母与数字构成,字母表示阅卷教师编号,数字代表分数,如A7代表阅卷教师A批改分数为7分
④为了保证教师阅卷严宽尺度一致,每一位教师具备一次回评功能,当输入A-1时表示A教师进行回评,按照阅卷先后顺序,先回评的是A教师最后阅到的试题;当输入A-2时退出回评序列,继续批阅回评前的后一道试题。-1到-2序列中间不会出现其他教师的批改记录。
⑤回评过程中若此教师发现本人此题批阅记录因重评被遗弃,或已经评分完成,则此次记录无效阅卷过程与示例数据如下:
#读取试题数量n,并将阅卷序列存入变量ans,代码略
a=[[i,"","",i+1]
for i in range(0,n)]
okinfo=[0]*n
a[n-1][3]=0
pre,head=n-1,0
flag=True
pas=[ ]
pashead = {"A":-1,"B":-1,"C":-1}
print("ans:",ans)
p=0
while ok<n:
if ans[p][1]!="-":
if flag:
if okinfo[head]==1:
head=a[head][3]
continue
a[head][2]+=ans[p][0]
if len(a[head][2])==1:
a[head][1]=ans[p][1:]
else:
if abs(int(a[head][1][-1])-int(ans[p][1]))<=1:
okinfo[head]=1
ok+=1
else:
pre=head
a[head][1]+=ans[p][1]
pas.append([head,len(a[head][1]),pashead[ans[p][0]]])
pashead[ans[p][0]]=len(pas)-1
print("第"+str(head+1)+"题:",ans[p][1],"阅卷老师",ans[p][0])
head=a[head][3]
else: #缩进与 if flag 对齐
top=pashead[ans[p][0]]
num=pas[top][0]
if okinfo[num]!=1 and (len(a[num][1])-pas[top][1])<=1: #若有必要修改
if len(a[num][1])!=1:
#修改 a[num][1]的批改记录,代码略
if abs(int(a[num][1][-1])-int(a[num][1][-2]))<=1:
ok+=1
else:
a[num][1]=ans[p][1]
print("第"+str(num+1)+"题:",ans[p][1],"阅卷老师",ans[p][0])
pashead[ans[p][0]]=pas[pashead[ans[p][0]]][2]
elif ans[p][1:]=="-2":
flag=True
elif ans[p][1:]=="-1":
flag=False
p+=1
#输出结果(代码略)