题目链接:传送门
给你n行,每行有个li,和ri
美丽值是|l-r| 分别是l和r的总和
要求交换一行的r和l值,使得美丽值最大,若没有可以更大了输出0
巨水,求出l和r的总和,在遍历的时候减去这个l和r在分别加上r和l比较就行了
代码如下:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
#define N 100010
int l[N],r[N],pre[N];
int main(){
int i,j,n,m;
cin>>n;
int sum1=0,sum2=0;
for(i=1;i<=n;i++){
cin>>l[i]>>r[i];
sum1+=l[i];
sum2+=r[i];
pre[i]=abs(l[i]-r[i]);
}
int sum=abs(sum1-sum2);
int sum3,x=0;
for(i=1;i<=n;i++){
sum3=abs(sum1-sum2+2*r[i]-2*l[i]);
if(sum3>sum){
x=i;
sum=sum3;
}
}
cout<<x<<endl;
return 0;
}