题目描述如题
解法思路:
给出一个使用伴随数组的图示
a[i].data 1 5 2 6 3 7 4
a[i].num 1 2 3 4 5 6 7
这个是原数据
对data进行排序,是整体数组
a [i].data 1 2 3 4 5 6 7
a [i].num 1 3 5 7 2 4 6
从头开始查看num,如果num在所给的区间内,则k--,直到k=0,此时所对应的data为所
a [i].data 1 2 3 4 5 6 7
a [i].num 1 3 5 7 2 4 6
k 3 2 1 1 0
#include<iostream>
#include<algorithm>
using namespace std;
struct node
{
int num,data;
bool operator < (const node &p)const
{
return data < p.data;
}
};
node p[100001];
int main()
{
int n=7;
int i,j,a,b,c;
for(i=1;i<=n;i++)
{
scanf("%d",&p[i].data);
p[i].num = i;
}
sort(p+1,p+n+1);
scanf("%d %d %d",&a,&b,&c);
for(i=1;i<=n;i++)
{
if(p[i].num>=a && p[i].num <= b)
c--;
if(c==0)
break;
}
printf("%d\n",p[i].data);
return 0;
}