这数组排序就给我干晕了,大脑死机了,求解

又是一年秋招季,小明手握N个offer(就是企业的录用意向),薪资有高有低,待遇也各有不同,为了方便选择,他对每个offer进行了评分(评分越高越好),但是他不想找最高的也不想找最低的,而是想找一个排名等于他幸运数字的,希望你可以帮帮他。
输入
第一行一个整数N(1<=N<=1000000),表示offer数量。
第二行N个整数,代表offer评分(无序),评分保证大于1,小于1000000,可能存在重复的评分,
第三行一个整数,代表幸运数字L(1<=L<=N)
输出
一个数字,表示小明选择的那个的offer评分。
样例输入 Copy
4
90 28 233 115
2
样例输出 Copy
115
提示
对于重复的评分,他们的顺序顺延,例如评分为1,2,2,3,对应的排名就是4,2,3,1
#include<stdio.h>
int main()
{
int n,i,b,c=0,max,d;
long long a[1000001];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%lld",&a[i]);}
for(b=0;b<n;b++){
if(a[c]<a[c+1]){
max=a[c+1];
a[c+1]=a[c];
a[c]=max;

        c++;}}
        scanf("%d",&d);

        printf("%lld",a[d]);
        return 0;

}


int main()
{
    int n,k;
    int score[10000];
    scanf("%d",&n);
    for(int i=0;i<n;++i)
        scanf("%d",&score[i]);
    
    int temp=0;
    for(int i=0;i<n-1;++i)
        for(int j=i+1;j<n;++j)
        {
            if(score[i]<score[j])
            {
                temp=score[i];
                score[i]=score[j];
                score[j]=temp;
            }
        }
    scanf("%d",&k);
    printf("%d",score[k-1]);
    
    return 0;
}