社交網路中我們給每個人定義了乙個「活躍度」,現希望根據這個指標把人群分為兩大類,即外向型(outgoing,即活躍度高的)和內向型(introverted,即活躍度低的)。要求兩類人群的規模盡可能接近,而他們的總活躍度差距盡可能拉開。
輸入格式:## 標題輸入第一行給出乙個正整數n(2≤n≤10e5 )。隨後一行給出n個正整數,分別是每個人的活躍度,其間以空格分隔。題目保證這些數字以及它們的和都不會超過2e31
。
按下列格式輸出:
outgoing #: n1
introverted #: n2
diff = n3
其中n1是外向型人的個數;n2是內向型人的個數;n3是兩群人總活躍度之差的絕對值。
10238
1099
462333461
666555
outgoing #:
5introverted #:
5diff =
3611
13
11079
21869
3721
10029
1352613
5188
85
outgoing #:
7introverted #:
6diff =
9359
題目當中有要求:
要求兩類人群的規模盡可能接近,而他們的總活躍度差距盡可能拉開。但是怎麼分才合適呢???
開始的時候,我也糾結了老半天,後來看到別人寫的,
n為偶數,平均分人數就可。這是兩個樣例給出的結果呢。n為奇數,為保證總活躍度差距更大,outgoing人群比introverted人群數多乙個。
這樣子理解的話,還是比較好寫的。
#include
#include
#include
using namespace std;
intmain()
for(
int i=n-m; i)int diff=
abs(x-y)
;printf
("outgoing #: %d\nintroverted #: %d\ndiff = %d\n"
,m,n-m,diff)
;return0;
}
7 24 人以群分
社交網路中我們給每個人定義了乙個 活躍度 現希望根據這個指標把人群分為兩大類,即外向型 outgoing,即活躍度高的 和內向型 introverted,即活躍度低的 要求兩類人群的規模盡可能接近,而他們的總活躍度差距盡可能拉開。輸入第一行給出乙個正整數n 2 n 10 5 隨後一行給出n個正整數,...
7 11 互評成績(25 分)
題目鏈結 學生互評作業的簡單規則是這樣定的 每個人的作業會被k個同學評審,得到k個成績。系統需要去掉乙個最高分和乙個最低分,將剩下的分數取平均,就得到這個學生的最後成績。本題就要求你編寫這個互評系統的算分模組。輸入格式 輸入第一行給出3個正整數n 3 n 10 4,學生總數 k 3 k 10,每份作...
7 11 電話聊天狂人 25分
給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。輸入格式 輸入首先給出正整數n 10 5 為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。輸出格式 在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如...