问题标题: 酷町堂:1478

1
0
已解决
徐子宸
徐子宸
中级天翼
中级天翼

#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;
}

样例没过,求指点


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追加了内容

求采纳

0
0
徐子宸
徐子宸
中级天翼
中级天翼

。。。。。。结贴吧。。。。。。

0
0
0
我要回答