題目描述如題
解法思路:
給出一個使用伴隨數組的圖示
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;
}