首页 > 学院 > 开发设计 > 正文

给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个

2019-11-06 07:30:26
字体:
来源:转载
供稿:网友

(由于是ACM题所以是按其写的,其实我也是新手,如果有什么出错的地方还望理解和提出,我将继续努力)

题目描述

给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。

输入

第一行包含一个数n,表示序列长度。

第二行包含n个正整数,表示给定的序列。

第三个包含一个正整数m,表示询问个数。

接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。

输出

总共输出m行,每行一个数,表示询问的答案。

#include<iostream>using namespace std;int main(){	int *p,n, m, l, r, k;	int i, j, c, e = 0, u, max, a[1000];	p=new int[1000];	while (cin >> n)	{		for (i = 0; i < n; i++)			cin >> p[i];		cin >> m;		for (j = 0; j < m; j++)		{			cin >> l >> r >> k;			for (i = l - 1; i < r; i++)				a[e++] = p[i];			for (u = 1; u <= e - 1; u++)			{				for (c = 0; c <=e - u-1; c++)				{					if (a[c] < a[c + 1])					{						int t = a[c];						a[c] = a[c + 1];						a[c + 1] = t;					}				}			}			max = a[k-1];				cout<<max<<endl;				e = 0;		}	}	delete[]p;	return 0;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表