最小值 ACM 数据结构的使用

来源:互联网 发布:keynote软件官方下载 编辑:程序博客网 时间:2024/05/27 21:09

原题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=1073

题目描述:

               输入N个数,M次查询。每次查询给出一个数x

               要求:每次查询输出前x个数中第i小的数。(i为第i次查询)

               你可以假设M  <= NXi <= 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

在编码过程中我的思路:

               不得不说我把这道题给想复杂了,以为会非常的难,但其实认真思考,形成思路,实现起来也就不会很难。

               使用c++编程的好处:它有很多可以现成调用的函数,比如sort函数,还可以控制排序的范围,比如对于a数组,我只要对前n个数进行排序,则就可以这样进行调用:

                sort(a,a+n,cmp) cmp用来指定是升序还是降序。如果要升序,则return a<b,如果要降序,则 return a>b

我的代码:    

#include <bits/stdc++.h>using namespace std; int N,M;//输入的数字个数,进行的查询次数int T;//测试次数 int a[30010],b[50]; int cmp(int l,int h){return l<h;}int main(){int i,j;cin>>T;while(T--){cin>>N>>M;for(i=0;i<N;i++) cin>>a[i]; for(i=0;i<M;i++) cin>>b[i]; for(j=1;j<=M;j++){  sort(a,a+b[j-1],cmp);  cout<<a[j-1]<<endl;}}} 

 

原创粉丝点击