1. 程式人生 > >nyoj 1073 最小值

nyoj 1073 最小值

pos bsp pan ace spl editable 最小值 for 內存

最小值

時間限制:1000 ms | 內存限制:65535 KB 難度:3
描述

輸入N個數,M次查詢。

每次查詢給出一個數x。

要求:每次查詢輸出前x個數中第i小的數。(i為第i次查詢)

你可以假設M <= N,Xi <= Xi+1 <= Xi+2 <= ……. <= Xm (Xm <= N).

輸入
Line0:T
Line1: N,M
Line2…LineN+1:num1,......,numN
LineN+2…LineN+2+M:x1,……,xM

N < 30000, num < 2000000000
輸出
每次查詢輸出前i小的數,單獨一行。
詳細格式請參考樣例。
樣例輸入
1
7 4
3 1 -4 2 8 -1000 2
1 2 6 6
樣例輸出
3
3
1
2
/**
    分析:該題是,將前m個數升序排序,再輸出 P[pos]的值
    註意:不要將原數組直接進行排序 
**/

C/C++代碼實現:

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <stack>
#include <queue>
#include 
<map> using namespace std; int A[30005], B[30005]; int main () { int T; scanf ("%d", &T); while (T --) { int N, M, a; scanf ("%d%d", &N, &M); for (int i = 0; i < N; ++ i) scanf ("%d", &A[i]); for (int i = 1; i <= M; ++ i) { scanf (
"%d", &a); for (int j = 0; j < a; ++ j) { B[j] = A[j]; } sort (B, B + a, less <int>()); printf ("%d\n", B[i - 1]); } } return 0; }

nyoj 1073 最小值