如题:
![](https://i-blog.csdnimg.cn/blog_migrate/1428c36bcdc41f364567407c5f6b91e8.png)
题目分析
1.首先无论是python还是c++,采用暴力对比的方法都只能过70%的用例,剩余的测试用例会超时。
2.可以采用字典dic来存储数据,其中每一个值dic[x]=[2,3,a,b],表示值为x的数据中,被评估的结果(result)为0的有2个,被评估为1的有3个。排序后通过统计继而可以得到a:以当前值为阈值,比该值小的满足条件的有a个(包括自身),b:以当前值为阈值,比改值大的满足条件的有b个。最后通过循环求得:dic[x][2]+dic[x][3]-dic[i][0]最大的即为所求阈值。
代码
dic={}
m=int(input())
for i in range(m):
x,y=map(int,input().split())
if x in dic:
dic[x][y]+=1
else:
dic[x]=[0,0,0,0]
dic[x][y]+=1
key=sorted(dic)
dic[key[1]][2]=dic[key[0]][0]
dic[key[-1]][3]=dic[key[-1]][1]
for i in range(2,len(key)):
dic[key[i]][2]=dic[key[i]][0]+dic[key[i-1]][2]
for i in range(len(key)-2,-1,-1):
dic[key[i]][3]=dic[key[i]][1]+dic[key[i+1]][3]
best_cor=0
best=0
for i in key:
cor=dic[i][2]+dic[i][3]-dic[i][0]
if cor>best_cor:
best=i
best_cor=cor
elif cor==best_cor and i>best:
best=i
print(best)