L2-017 人以群分【排序】

Enjoy_process發表於2019-03-27

                                                   L2-017 人以群分

                   https://pintia.cn/problem-sets/994805046380707840/problems/994805061056577536

 

題目

社交網路中我們給每個人定義了一個“活躍度”,現希望根據這個指標把人群分為兩大類,即外向型(outgoing,即活躍度高的)和內向型(introverted,即活躍度低的)。要求兩類人群的規模儘可能接近,而他們的總活躍度差距儘可能拉開。

輸入

輸入第一行給出一個正整數N(2≤N≤10​^5​​)。隨後一行給出N個正整數,分別是每個人的活躍度,其間以空格分隔。題目保證這些數字以及它們的和都不會超過2^​31​​。

輸出

按下列格式輸出:

Outgoing #: N1
Introverted #: N2
Diff = N3

其中N1是外向型人的個數;N2是內向型人的個數;N3是兩群人總活躍度之差的絕對值。

樣例輸入

10
23 8 10 99 46 2333 46 1 666 555

樣例輸入

Outgoing #: 5
Introverted #: 5
Diff = 3611

分析

排序。

C++程式

#include<iostream>
#include<algorithm>

using namespace std;

const int N=100005;

int a[N];

int main()
{
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	  scanf("%d",&a[i]);
	sort(a,a+n);
	int mid=n/2;
	int ans=0;
	for(int i=mid;i<n;i++) ans+=a[i];
	for(int i=0;i<mid;i++) ans-=a[i];
	printf("Outgoing #: %d\nIntroverted #: %d\nDiff = %d\n",n-n/2,n/2,ans);
	return 0;
}

 

相關文章