使用sort结果RE???

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

为什么要用sort啊,不是大才小用吗?
by Jim_Franklin @ 2023-09-24 21:17:14


结构体排序 AC Code ```cpp #include <bits/stdc++.h> using namespace std; struct node { string name; int s, ch, ma, en, id; }a[1010]; bool cmp(node x, node y) { if (x.s != y.s) return x.s > y.s; return x.id < y.id; } int main() { int n; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i].name >> a[i].ch >> a[i].ma >> a[i].en; a[i].s = a[i].ch + a[i].ma + a[i].en; a[i].id = i; } sort(a + 1, a + n + 1, cmp); cout << a[1].name << " " << a[1].ch << " " << a[1].ma << " " << a[1].en; return 0; } ```
by wzj0829 @ 2023-09-24 21:19:32


这题不需要用排序吧。就算需要,也用不着排字符串吧。
by xiaofeng_and_xiaoyu @ 2023-09-24 21:21:55


???那我这是怎么回事 ```cpp #include<bits/stdc++.h> using namespace std; struct stu{ string name; int c,m,e,idx,sums; }s[1050]; long long n; bool cmp(stu a,stu b) { if(a.sums!=b.sums) return a.sums>b.sums; else return a.idx<b.idx; } int main() { cin>>n; for(long long i=1;i<=n;i++) { scanf("%s %d %d %d",&s[i].name,&s[i].c,&s[i].m,&s[i].e); s[i].idx=i; s[i].sums=s[i].c+s[i].m+s[i].e; } sort(s+1,s+n+1,cmp); cout<<s[1].name<<" "<<s[1].c<<" "<<s[1].m<<" "<<s[1].e; return 0; } ``` 所有测试点全部RE@[wzj0829](/user/1028403)
by Cryflmind @ 2023-09-24 21:22:44


@[Jim_Franklin](/user/686342) @[xiaofeng_and_xiaoyu](/user/706760) 我也没排字符串啊xwx [评测记录](https://www.luogu.com.cn/record/126007690)
by Cryflmind @ 2023-09-24 21:23:46


离谱的是,我后面改了个string name 把它改成char name[10],然后就AC了
by Cryflmind @ 2023-09-24 21:27:08


@[Cryflmind](/user/563251) 把scanf换成cin就能A
by xiaofeng_and_xiaoyu @ 2023-09-24 21:30:36


建议直接迭代
by xiaofeng_and_xiaoyu @ 2023-09-24 21:32:03


@[xiaofeng_and_xiaoyu](/user/706760) ???合着是scanf导致的??? 但是为啥owo
by Cryflmind @ 2023-09-24 21:33:34


sort不稳定
by 1073741824aa @ 2023-10-13 19:50:22


|