题意:若数组中一个数前的所有数都比这个数小,那么定义它为一个record。若去掉某一个元素使剩下的数组中record最多,求这个元素
分析:对每个元素,考虑去掉它的情况。若第i个元素前有i-1个小于它的元素,则去掉该元素后这个数组前i个元素的record总数-1.若第i个元素前有i-2个小于它的元素,那么去掉前i个元素中大于第i个元素的那个元素后,前i个元素的record总数+1.若第i个元素前有两个及以上的元素大于它,那么无论去掉它还是大于它的元素,前i个元素record总数不变。循环完毕后找到去掉它后record总数增加最多的元素即可。
实现:用树状数组实现快速查询小于某元素的元素个数,用STL的set(红黑树)的lower_bound实现快速找到大于某元素的最小元素。
AC代码: