#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/12/13 22:36
# @Author : Jzk
# @Site :
# @File : pais2.py
# @Software: PyCharm
'''
排好序后,这个问题可以转化成左边0的个数+右边1的个数,因为左边元素肯定小于他,右边元素肯定大于他,
第一次遍历从 [0,m-1),每次出现一个0,就将下一个的阈值和num加入新的列表中,即[阈值,num]
第二次遍历从[m-1,0],每次出现一个1,num2就加1,,然后将与当前阈值对应的新列表中的num加上num2
然后对新列表li2进行排序,此时num的顺序是从小到大,
因为会出现重复阈值得分不同的情况,此时应该取较小的值
'''
m = int(input())
li = []
for i in range(m):
li.append(list(map(int, input().split())))
# 排序
li.sort()
# li2第一项
li2 = [[li[0][0], 0]]
# 左边有多少个0,也就是预测挂科正确的个数
num = 0
a=0
# for i in range(m - 1):
# if li[i][1] == 0 :
# if li[i+1][0]!=li[i][0]:
# num += 1+a
# li2.append([num, li[i + 1][0]])
# else:
# a+=1
# # 第一个是num,第二个是阈值
# li2.append([ num,li[i + 1][0]])
# else:
# li2.append([ num,li[i + 1][0]])
for i in range(m-1):
if li[i][0]!=li[i+1][0]:
if li[i][1]==0:
num+=1+a
li2.append([num, li[i + 1][0]])
a=0
else:
li2.append([num+a, li[i + 1][0]])
a=0
else:
li2.append([num, li[i + 1][0]])
if li[i][1]==0:
a+=1
# 右边(包含自己)有多少个1,即预测不挂科正确的个数
num2 = 0
for i in range(m-1, -1, -1):
if li[i][1] == 1:
num2 += 1
li2[i][0] += num2
# print(li2)
# 将li2排序,此时num的顺序是从小到大
li2.sort()
# print(li2)
print(li2[-1][1])
# so=set()
# li3=[]
# 去除重复的阈值,取得分小的
# for i in li2:
# if i[1] not in so:
# so.add(i[1])
# li3.append(i)
# print(li3[-1][1])
# 测试用例
'''
6
0 0
1 0
1 1
3 1
5 1
7 1
'''
网友评论