中级天翼
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<string>
using namespace std;
struct bh{
int n1,n2;
bool n;
}a[65];
bool cmp(bh a,bh b)
{
if(a.n!=b.n){
if(a.n2>b.n2){
return a.n2>b.n2;
}
if(a.n2<b.n2){
return a.n2<b.n2;
}
}
if(a.n==b.n&&a.n==1&&a.n!=a.n){
return a.n>b.n;
}
if(a.n2==b.n2){
return a.n1<b.n1;
}
return a.n1<b.n1;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].n1>>a[i].n2;
if(a[i].n2>=60){
a[i].n=true;
}
else{
a[i].n=false;
}
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].n1<<endl;
}
return 0;
}
样例没过,求指点
初级守护
我会!
潘一鸣在2020-05-31 19:41:09追加了内容
核心:
struct bh{
int a,b;
}a[6500];
bool cmp(bh a,bh b){
return a.b>b.b;
}
bool cmp1(bh a,bh b){
if(a.b!=b.b){
return a.b>b.b;
}
return a.a<b.a;
}
bool cmp2(bh a,bh b){
return a.a<b.a;
}
int main()
{
整形 n,k=0,u=0;
输入>>n;
循环(int i=1;i<=n;i++)
{
输入>>a[i].a>>a[i].b;
如果(a[i].b>=60){
k++;
}
else{
}
}
排序(a+1,a+1+n,cmp);
sort(a+1,a+1+k,cmp1);
sort(a+k+1,a+1+n,cmp2);
循环(int i=1;i<=n;i++){
cout<<a[i].a<<endl;
}
返回值 0;
潘一鸣在2020-05-31 19:41:25追加了内容
求采纳