0
已解决
#include<iostream>
#include<algorithm>
using namespace std;
struct p{//定义结构体p
int cj;//cj表示成绩
}a[100005],b[100005];
bool cmp(p a,p b){
return a.cj>b.cj;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].cj;//输入成绩
b[i].cj=a[i].cj;
}
sort(a+1,a+n+1,cmp);
for(int i=3;i>=1;i--){
for(int j=1;j<=n;j++){
if(b[j].cj==a[i].cj){
cout<<j<<" ";
}
}
}
cout<<endl;
for(int i=n;i>=n-2;i--){
for(int j=1;j<=n;j++){
if(b[j].cj==a[i].cj){
cout<<j<<" ";
}
}
}
return 0;
}
虽然思路贼差,太暴力了,但也没TLE啊,倒是WA了。
黄依成在2020-05-27 22:11:44追加了内容
40分
0
已采纳
0
结构体你会写吧,用sort从大到小排序都会吧
核心代码:
sort(a+1,a+n+1,cmp1);
sort(a+1,a+4,cmp2);
sort(a+n-2,a+1+n,cmp2);
cout<<a[1].id<<' '<<a[2].id<<' '<<a[3].id<<endl;
cout<<a[n-2].id<<' '<<a[n-1].id<<' '<<a[n].id;
a[i].score是从大到小排序,a[i].id是从小到大排序
bool cmp1(stu a,stu b)
{
score从大到小排;
}
bool cmp2(stu a,stu b)
{
id从小到大牌;
}
0
0
0
