onecode天梯 B 第K大的數

2022-08-21 10:33:10 字數 897 閱讀 9700

b : 第k大的數

時間限制: 1000 ms 記憶體限制: 131072 kb 提交總數: 13 ac總數: 11

問題描述

給出乙個包含n個數的數列,現在從這個數列中取出所有子區間中的第k大的數(所有長度大於等於k的子區間),構成乙個新的數列,求這個新的數列的第m大的數是多少?

輸入格式

首先,輸入3個數n,k,m,含義見題目描述。

第二行有n個數,第i個數記為a[i],代表第i個數的大小。

【資料範圍】

1<=n<=100000,1<=k<=n,1<=a[i]<=10^9。m的範圍保證在組成新的數列的下標範圍內。

輸出格式

輸出第m大的數是多少。

樣例輸入

樣例輸入1:

5 3 2

2 3 1 5 4

樣例輸入2:

3 3 1

5 8 2

樣例輸出

樣例輸出1:

3 樣例輸出2:

2

#include 

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

const

int n=1e5+5;

int a[n],b[n];

ll get(int x,int n,int k)

num--; pos++;}}

return ans;

}int main()

printf("%d\n",b[l-1]);

}return

0;}

第k大的數,前k大的數

1 排序後去出前k個,o n log n 如果k2 o nlog k 快排把數分為了兩個部分,所以考慮兩個情況,如果大的部分的個數 k,說明只要繼續在大的部分找就可以了,如果大的部分的個數3 o nlog maxv minv delta 平均為o nlogn 轉化為找第k個,假設最大的數為maxv,...

第K大的數

這道題是我去年聽說的,一次比賽悲劇的,前幾天ac的,大體思路是二分答案,記住在統計的時候,複雜度為n,而不是nlogn,這道題複雜度為 nlog max min include include includeusing namespace std define maxn 51000 int64 a ...

第k大的數

題目 陣列a和陣列b,裡面都有n個整數。陣列c共有n 2個整數,分別是a 0 b 0 a 0 b 1 a 1 b 0 a 1 b 1 a n 1 b n 1 陣列a同陣列b的組合 求陣列c中第k大的數。例如 a 1 2 3,b 2 3 4。a與b組合成的c包括2 3 4 4 6 8 6 9 12共9...