L2-017 人以群分

题目 L2-017 人以群分

image-1e819fb9

思路分析

image-a68e7667

代码实现

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
using ll = long long;
using ull = unsigned long long;
using PII = pair<int,int>;
using Pll = pair<ll,ll>;
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
const int inf = 0x3f3f3f3f;

int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int n;cin>>n;
	vector<int> nums(n);
	for(int i=0;i<n;i++){
		cin>>nums[i];
	}
	sort(nums.begin(),nums.end());
//	for(int i=0;i<n;i++)	cout<<nums[i]<<" ";

	int mid=n/2;
	if(n%2==0){
		ll suml=0,sumr=0;
		for(int i=0;i<mid;i++)
			suml+=nums[i];
		for(int i=mid;i<n;i++)
			sumr+=nums[i];
		cout<<"Outgoing #: "<<mid<<endl
		<<"Introverted #: "<<mid<<endl
		<<"Diff = "<<abs(sumr-suml);
	}else{
		ll suml=0,sumr=0;
		for(int i=0;i<=mid-1;i++)
			suml+=nums[i];
		for(int i=mid+1;i<n;i++)
			sumr+=nums[i];
		ll addl=suml+nums[mid];
		ll addr=sumr+nums[mid];
		if(abs(addl-sumr) > abs(suml-addr)){
			cout<<"Outgoing #: "<<mid<<endl
			<<"Introverted #: "<<mid+1<<endl
			<<"Diff = "<<abs(addl-sumr);
		}else{
			cout<<"Outgoing #: "<<mid+1<<endl
			<<"Introverted #: "<<mid<<endl
			<<"Diff = "<<abs(suml-addr);
		}
	}

	return 0;
}

同类题型

视频讲解


⬅️ L2-016 愿天下有情人都是失散多年的兄妹 🏠 00-天梯赛 ➡️ L2-018 多项式A除以B