codeforces#378 div.2 B Parade

来源:互联网 发布:韩国lte是什么网络 编辑:程序博客网 时间:2024/05/16 14:31

题意:给定n个队伍,每个队伍i都有li个先迈左脚的士兵和ri个先迈右脚的士兵,队伍的beauty指的是(li-ri)的绝对值,问调换哪一队队伍使得n个队伍的beauty最大。如有多组解法,输出任意一组,如果原来就已经是最大,输出0。

解题思路:分别求踏左脚的和踏右脚的人数,然后对每一队队伍调换,判断beauty是否增加。
复杂度为O(n)。

#include<bits/stdc++.h>using namespace std;const int MAX_N = 100000+500;struct sce{    int left,right;    int num=0;};int main(){    int n,ans=0,max_n=-1,left_sum=0,right_sum=0;    sce d[MAX_N];    cin>>n;    for(int i=1;i<=n;i++){        cin>>d[i].left>>d[i].right;        d[i].num=i;        left_sum+=d[i].left;        right_sum+=d[i].right;    }    //cout<<left_sum<<ends<<right_sum<<endl;    max_n=abs(left_sum-right_sum);    for(int i=1;i<=n;i++){        int t=abs(left_sum+2*d[i].right-right_sum-2*d[i].left);        //cout<<t<<endl;        if(t>max_n) {            max_n=t;            ans=i;        }    }    cout<<ans<<endl;}
0 0
原创粉丝点击