解题报告——总共10行代码的神题 CF351E
首先这题的答案是
我最开始的时候是按取正取负绝对值大小分了16种情况讨论每一对
我们暂且不考虑绝对值相等的情况,我们发现当
那么绝对值相等的呢?其实结论是在最优情况下所有绝对值相等的取的正负都一样,所以不产生贡献,考虑这个:
____①____A___②___B______③____
假如
(upd:woc好像证伪了……好像不那么显然……
(upd:哦好像知道了,假设
然后代码真的总共只有10行……
#include<iostream>
#define abs(_o) ((_o<0)?-(_o):(_o))
using namespace std;
int ints[2222];
int main(){
int n;cin>>n;for(register int i=1;i<=n;i++)cin>>ints[i];int ans=0;for(register int i=1;i<=n;i++){
int l=0,r=0;for(register int j=1;j<i;j++)if(abs(ints[j])<abs(ints[i]))l++;
for(register int j=i+1;j<=n;j++)if(abs(ints[j])<abs(ints[i]))r++;ans+=min(l,r);
}cout<<ans<<endl;return(0);
}