题目描述
给定一个长度为 n 的二进制数组 a 。你最多只能对它 执行一次 操作。在操作中,您可以选择任何元素并翻转它:将 0 变为 1 ,或者 1 变为 0 。
在进行最多一次操作后,数组的最大逆序对个数是多少?
逆序对:当下标 i<j 满足 ai>aj ,则称 (i,j) 为一组逆序对。
输入格式
第一行输入一个数字 n ,代表数组长度
紧接着输入 n 个空格隔开的数字,每个数字要么是 0 ,要么是 1
输出格式
输出最大的逆序对个数
4
1 0 1 0
3
6
0 1 0 0 1 0
7
提示
对于 50% 的数据,1≤n≤102,0≤ai≤1
对于 100% 的数据,1≤n≤2∗105,0≤ai≤1
对于第一个测试用例,逆序最初由下标 (1,2)、(1,4)、(3,4) 组成,总共为 3 ,这已经是最大值。
对于第二个测试用例,逆序最初由下标 (2,3) 、(2,4)、(2,6)、(5,6) 构成,共 4 个。但是,通过翻转第一个元素,数组变成 1 1 0 0 1 0 ,它的逆序是由下标 (1,3),(1,4),(1,6),(2,3),(2,4),(2,6),(5,6) 组成的,总共是 7 个逆序,这是可能的最大值。