CodeForces 733 B.Parade(水~)

xiaoxiao2021-02-27  333

Description 两个长度均为n的序列a和b,至多可以交换某一位置上的数,问a序列和和b序列和的差的绝对值最小时交换的位置 Input 第一行一整数n表示序列长度,之后n行每行两个整数a[i]和b[i] (1<=n<=1e5,1<=a[i],b[i]<=500) Output 输出a序列和和b序列和的差的绝对值最小时交换的位置,如果没有交换时最小则输出0 Sample Input 3 5 6 8 9 10 3 Sample Output 3 Solution 简单题,枚举交换的位置即可 Code

#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<queue> #include<map> #include<set> #include<ctime> using namespace std; typedef long long ll; #define INF 0x3f3f3f3f #define maxn 111111 int n,a[maxn],b[maxn],L,R,pos,ans; int main() { while(~scanf("%d",&n)) { L=R=0; for(int i=1;i<=n;i++)scanf("%d%d",&a[i],&b[i]),L+=a[i],R+=b[i]; pos=0,ans=abs(L-R); for(int i=1;i<=n;i++) { L+=b[i]-a[i],R+=a[i]-b[i]; if(abs(L-R)>ans) ans=abs(L-R),pos=i; L-=b[i]-a[i],R-=a[i]-b[i]; } printf("%d\n",pos); } return 0; }
转载请注明原文地址: https://www.6miu.com/read-3839.html

最新回复(0)