输出是正确答案的前面一名。

我这里遇到了一个问题【图片说明
数据输入进去后输出的是正确答案的前面一名】,我经过了如下尝试【图片说明
将for循环里的i和j增加或减少一位】,不能得到解决,没有报错,请问该怎么解决?

附:【问题图片说明
】【源代码图片说明

其实这道题可以直接sort一下
代码如下:

#include<bits/stdc++.h>
#define maxn 100039
using namespace std;
int n,k;
struct zj{
    int a;
    double b;
}student[maxn];
bool cmp(const zj &a,const zj &b){
    return a.b>b.b;
}
int main(){
    cin>>n>>k;
    for(int i=1;i<=n;i++)
        cin>>student[i].a>>student[i].b;
    sort(student+1,student+1+n,cmp);
    cout<<student[k].a<<" ";
    printf("%g",student[k].b);
    return 0;
}

不会的话,可以用冒泡排序
反正以后sort会很常用的

数组是从0开始的,你在for循环里面的i=1改成i=0试试

我觉得样例的答案错了,第三位应该是61吧?