求助

P5740 【深基7.例9】最厉害的学生

_QrSn_ @ 2021-10-31 09:00:52

代码(WA第一个点):

#include<bits/stdc++.h>
using namespace std;
int n;
struct man
{
    string names;
    int chinese,match,english,zong;
} a[1005];
bool  cmp(const man &x, const man &y)
{
    return x.zong>y.zong;
}
int main()
{
    cin>>n;
    for(int i=0; i<n; i++)
    {
        cin>>a[i].names>>a[i].chinese>>a[i].match>>a[i].english;
        a[i].zong=a[i].chinese+a[i].match+a[i].english;
    }
    sort(a,a+n,cmp);
    cout<<a[0].names<<" "<<a[0].chinese<<" "<<a[0].match<<" "<<a[0].english;
    return 0;
}

下载的样例:

输入:
913
pzztktv 0 0 0
yzcuqky 0 0 0
mbwdk 0 0 0
msmszaa 0 0 0
nvzcy 0 0 0
...(反正分数都是0)
fglue 0 0 0
queudmvq 0 0 0
dmixaexb 0 0 0
eavusoo 0 0 0
vmjlrw 0 0 0

输出:
pzztktv 0 0 0

程序输出:
vqnemsn 0 0 0

为什么会这样,求dalao指点

QAQ


by Lsz_2024111368 @ 2021-10-31 09:12:52

@强人锁男 sort是不稳定排序,会打乱相等元素在数组内的位置

把sort换成stable_sort(稳定)试试?


by _QrSn_ @ 2021-10-31 09:14:43

@天下人间 AC了,谢谢dalao!


by Lsz_2024111368 @ 2021-10-31 09:16:29

@强人锁男 另外建议背几个排序的板子,有时候sort无法解决(比如dijkstra的堆优化)


by moduyilong @ 2021-10-31 09:18:46

@天下人间 但是有STL和pb_ds啊


|