原題:
http://172.16.0.132/junior/#contest/show/1368/1
題目描述:
過去的2012年對小x來說是很悲催的一年,失戀了12 次,每次都要郁悶1個月。好在小x是個體育迷,在最痛苦的時候,他常常用觀看各種體育節目來麻醉自己,比如倫敦奧運會期間,小x就常常在周末邀上一群單身同僚聚在自己的蝸居,一邊暢飲啤酒,一邊吹牛。
小x最喜歡看的是跳水,主要原因也是因為這個項目有中國人參加,而且中國隊員獲勝的幾率很大,一般不會再給自己添堵,不然何談看體育療情傷呢。跳水項目的一個重要環節就是裁判打分,小x他們有時候會覺得某個裁判不公平,是不是有意在壓中國隊員的分數。于是每當一個隊員跳水完畢,他們幾個也像電視上的裁判那樣給隊員打分,并且規定,誰的分數和最終得分最接近誰就是他們當中的最佳裁判,現場獎勵啤酒一杯!
其中,最終得分是這樣計算的:N 個人打分,去掉一個最高分,去掉一個最低分,然後剩餘分數相加,再除以 N-2 即為最終得分。憑借“看體育療情傷”而練就的專業體育知識,小x幾乎每局必勝,這一夜,小x注定要爛醉如泥了……
輸入:
輸入包含多組測試資料。
每組測試資料首先是一個整數 N,表示裁判的人數,然後接着是 N 個實數,表示 N 個裁判的打分 Pi
N 為 0 時表示結束輸入。
輸出:
請計算并輸出最佳裁判的編号,每組資料輸出占一行。若有多人并列最佳裁判,隻要求輸出編号最小的那個。
特别說明:裁判編号按照打分的順序從 1 開始,依次類推,最後一人編号為 N。
樣例輸入:
5 8.3 9.2 8.7 8.9 9.0
樣例輸出:
4
資料範圍限制:
其中,5 <= N <= 20,0 <= Pi <= 10。
分析:
先求出最終得分,然後枚舉pi求出相差最小的編号;
實作:
var
n,i,minn:longint;
max,min,ans:real;
p:array[..]of real;
begin
assign(input,'judgers.in');reset(input);
assign(output,'judgers.out');rewrite(output);
while not eof do
begin
ans:=; max:=; min:=maxlongint; minn:=;
fillchar(p,sizeof(p),);
read(n);
if n= then break;
for i:= to n do
begin
read(p[i]);
ans:=ans+p[i];
if p[i]>max then begin max:=p[i]; end;
if p[i]<min then begin min:=p[i]; end;
end;
ans:=(ans-max-min)/(n-);
min:=maxlongint; minn:=;
for i:= to n do
if abs(ans-p[i])+<min then
begin
min:=abs(ans-p[i]);
minn:=i;
end;
writeln(minn);
end;
close(input);close(output);
end.