CCF 試題解析附加原始碼(2016 12)

2021-07-26 10:39:09 字數 1223 閱讀 9106

試題編號:

201612-1

試題名稱:

中間數時間限制:

1.0s

記憶體限制:

256.0mb

問題描述:

問題描述

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

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

輸入格式

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

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

輸出格式

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

樣例輸入

62 6 5 6 3 5

樣例輸出

5

樣例說明

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

樣例輸入

43 4 6 7

樣例輸出

-1

樣例說明

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

樣例輸入

53 4 6 6 7

樣例輸出

-1

樣例說明

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

評測用例規模與約定

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

問題分析:

在本題中,我們首先需要宣告兩個變數陣列和n,判斷的函式也相應的給出並傳入陣列和n值。

我用的方法比較淳樸點啦,分別利用三個指標,i,j,z來定位陣列中的位置資訊。i表示陣列中的乙個點,j和z分別表示其右面和左面的數值。

其工作流程如下圖:

#include

#include

using namespace std;

void ifmiddlenum(int a,int n)

if (a[z]>a[i])

}if (a[j] < a[i])

if (a[j] > a[i])}}

if (minnum == maxnum)

if (minnum != maxnum)

}int main()

ifmiddlenum(vec,num);

return 0;

}

Hdfs 原始碼解析(2)

namenode啟動 namenode持久化了檔案和塊之間的對應關係,也就是在namenode資料目錄下的current fsimage目錄,namenode啟動的時候,會將這個檔案載入到記憶體裡。塊和機器的對應關係,namenode並不持久化,也就是說,namenode在啟動的時候,並不知道檔案塊...

Handler原始碼解析2

handler原始碼解析1 handler原始碼解析2 享元設計模式 記憶體復用,使用同一塊記憶體空間,bitmap,recycleview都有使用這種思想 在loop從訊息佇列中取出訊息並分發完後,並不會把訊息物件銷毀,而是通過msg.recycleunchecked 方法清空訊息放入訊息池進行 ...

Handler原始碼解析2

handler原始碼解析1 handler原始碼解析2 享元設計模式 記憶體復用,使用同一塊記憶體空間,bitmap,recycleview都有使用這種思想 在loop從訊息佇列中取出訊息並分發完後,並不會把訊息物件銷毀,而是通過msg.recycleunchecked 方法清空訊息放入訊息池進行 ...