文章
35
粉丝
134
获赞
55
访问
25.3k
#include <bits/stdc++.h>
using namespace std;
struct node{
string name;
int score;
};
int cmp1(node n1,node n2){
return n1.score>n2.score;
}
int cmp2(node n1,node n2){
return n1.score<n2.score;
}
int main(){
int n,m;
while(cin>>n>>m){
node arr[n];
for(int i=0;i<n;i++){
cin>>arr[i].name>>arr[i].score;
}
if(m==0){
stable_sort(arr,arr+n,cmp1);//底层是归并排序,可以保持稳定
}
if(m==1){
stable_sort(arr,arr+n,cmp2);
}
for(int i=0;i<n;i++){
cout<<arr[i].name<<" "<<arr[i].score<<endl;
}
}
return 0;
}
登录后发布评论
将
node arr[n];
作为数组的声明是不合法的,会导致编译错误。要解决这个问题,可以使用动态内存分配来创建一个可变长度的数组。可以使用以下方式来创建一个动态数组:
node* arr = new node[n];