給定乙個序列,每次詢問序列中第l個數到第r個數中第k大的數是哪個。
第一行包含乙個數n,表示序列長度。
第二行包含n個正整數,表示給定的序列。
第三個包含乙個正整數m,表示詢問個數。
接下來m行,每行三個數l,r,k,表示詢問序列從左往右第l個數到第r個數中,從大往小第k大的數是哪個。序列元素從1開始標號。
總共輸出m行,每行乙個數,表示詢問的答案。
51 2 3 4 5
21 5 2
2 3 242
對於30%的資料,n,m<=100;
對於100%的資料,n,m<=1000;
保證k<=(r-l+1),序列中的數<=106。
直接暴力可解
對每一次詢問sort,然後取第k大即可
時間複雜度m*nlogn
n =
int(
input()
)ll =
list
(map
(int
,input()
.split())
)m =
int(
input()
)for i in
range
(m):
x,y,z =
map(
int,
input()
.split())
l = ll[x-
1:y]
l.sort(
)print
(l[-z]
)
#include
#include
#include
using
namespace std;
intcmp
(int a,
int b)
intmain()
cin >> m;
vector<
int>
result
(m);
for(
int i =
0; i < m; i++
)sort
(temp + l -
1, temp + r, cmp)
; result[i]
= temp[l -
1+ k -1]
;delete
temp;
}for
(int i =
0; i < m; i++
)return0;
}
藍橋杯 ALGO 1 區間k大數查詢
演算法訓練 區間k大數查詢 時間限制 1.0s 記憶體限制 256.0mb 問題描述 給定乙個序列,每次詢問序列中第l個數到第r個數中第k大的數是哪個。輸入格式 第一行包含乙個數n,表示序列長度。第二行包含n個正整數,表示給定的序列。第三個包含乙個正整數m,表示詢問個數。接下來m行,每行三個數l,r...
藍橋杯ALGO 1 區間k大數查詢
問題描述 給定乙個序列,每次詢問序列中第l個數到第r個數中第k大的數是哪個。輸入格式 第一行包含乙個數n,表示序列長度。第二行包含n個正整數,表示給定的序列。第三個包含乙個正整數m,表示詢問個數。接下來m行,每行三個數l,r,k,表示詢問序列從左往右第l個數到第r個數中,從大往小第k大的數是哪個。序...
藍橋杯 ALGO 1 區間k大數查詢
1 區間k大數查詢 試題 演算法訓練 區間k大數查詢 資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 給定乙個序列,每次詢問序列中第l個數到第r個數中第k大的數是哪個。輸入格式 第一行包含乙個數n,表示序列長度。第二行包含n個正整數,表示給定的序列。第三個包含乙個正整數m,表示詢...