U161466求助
  • 板块灌水区
  • 楼主cygnus_beta
  • 当前回复8
  • 已保存回复8
  • 发布时间2021/5/7 20:27
  • 上次更新2023/11/4 23:34:43
查看原帖
U161466求助
452531
cygnus_beta楼主2021/5/7 20:27
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;

typedef struct{
    int c,m,e,s,n,rank;
    void sum(){
        this->s=this->c+this->m+this->e;
    }
}stu;

bool cmp(stu stu1,stu stu2){
    if(stu1.s>stu2.s)return true;
    else{
        if(stu1.s<stu2.s)return false;
        if(stu1.c>stu2.c)return true;
        else{
            if(stu1.c<stu2.c)return false;
            if(stu1.m>stu2.m)return true;
            else return false;
        }
    }
}

bool cmp_n(stu stu1,stu stu2){
    return stu1.n>stu2.n;
}

vector<stu>stus;
vector<stu>stuss;
stu Stu;
int n;

int main(){
    //scanf("%d",&n);
    //freopen(("AST"+to_string(n)+".in").c_str(),"r",stdin);
    //freopen(("AST"+to_string(n)+".out").c_str(),"w",stdout);

    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d%d%d%d",&Stu.n,&Stu.c,&Stu.m,&Stu.e);
        Stu.sum();
        stus.push_back(Stu);
    }
    stuss=stus;
    sort(stus.begin(),stus.end(),cmp);
    for(int i=0;i<stuss.size();i++)
        for(int j=0;j<stus.size();j++)
            if(stuss[i].n==stus[j].n)stuss[i].rank=j+1;
    scanf("%d",&n);
    sort(stuss.begin(),stuss.end(),cmp_n);
    for(int i=0;i<n;i++){
        scanf("%d",&Stu.n);
        auto iter=lower_bound(stuss.begin(),stuss.end(),Stu,cmp_n);
        printf("%d\n",iter->rank);
    }

    //fclose(stdin);
    //fclose(stdout);

    return 0;
}

开O2能过,不开后六个点TLE

2021/5/7 20:27
加载中...