CSP認證 中間數 (C )

2021-10-03 19:58:03 字數 1160 閱讀 4910

問題描述

試題編號:

201612-1

試題名稱:

中間數時間限制:

1.0s

記憶體限制:

256.0mb

問題描述:

問題描述

在乙個整數序列a1, a2, …, an中,如果存在某個數,大於它的整數數量等於小於它的整數數量,則稱其為中間數。在乙個序列中,可能存在多個下標不相同的中間數,這些中間數的值是相同的。

給定乙個整數序列,請找出這個整數序列的中間數的值。

輸入格式

輸入的第一行包含了乙個整數n,表示整數序列中數的個數。

第二行包含n個正整數,依次表示a1, a2, …, an。

輸出格式

如果約定序列的中間數存在,則輸出中間數的值,否則輸出-1表示不存在中間數。

樣例輸入

62 6 5 6 3 5

樣例輸出

樣例說明

比5小的數有2個,比5大的數也有2個。

樣例輸入

43 4 6 7

樣例輸出

-1樣例說明

在序列中的4個數都不滿足中間數的定義。

樣例輸入

53 4 6 6 7

樣例輸出

-1樣例說明

在序列中的5個數都不滿足中間數的定義。

評測用例規模與約定

對於所有評測用例,1 ≤ n ≤ 1000,1 ≤ ai ≤ 1000。

解題思路:由題意可知,中間數與中位數是有區別的,一串排序好的數字中任何乙個數字都可能是中間數;

再看評測用例的資料範圍最多為10的三次,可以使用兩層for迴圈,因此使用兩個變數less和more統計小於/大於某個數字的個數,(使用兩個for迴圈遍歷實現)。

實現**如下:

#includeusing namespace std;

int main();

for(int i = 0; i < n; i++)

sort(num,num+n);

for(int i = 0; i < n; i++)

else if(num[j] < ans && i != j)

} if(less == more)else if(less != more && i == n - 1) }

}

CCF認證 201612 1中間數(C )

試題編號 201612 1 試題名稱 中間數時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 在乙個整數序列a1,a2,an中,如果存在某個數,大於它的整數數量等於小於它的整數數量,則稱其為中間數。在乙個序列中,可能存在多個下標不相同的中間數,這些中間數的值是相同的。給定乙個整數序...

CCF認證201612 1 中間數

問題描述 試題編號 201612 1 試題名稱 中間數時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 在乙個整數序列 a1,a 2,an中,如果存在某個數,大於它的整數數量等於小於它的整數數量,則稱其為中間數。在乙個序列中,可能存在多個下標不相同的中間數,這些中間數的值是相同的。...

CCF認證201612 1中間數

問題描述 在乙個整數序列a1,a2,an中,如果存在某個數,大於它的整數數量等於小於它的整數數量,則稱其為中間數。在乙個序列中,可能存在多個下標不相同的中間數,這些中間數的值是相同的。給定乙個整數序列,請找出這個整數序列的中間數的值。輸入格式 輸入的第一行包含了乙個整數n,表示整數序列中數的個數。第...