1015 德才论 (25 分)

2019-04-30  本文已影响0人  79d12e22ec53
#include<stdio.h>
#include<stdlib.h>

typedef struct StudentInf
{
    int ID;
    int de, cai, sum;
    int lv;

}Student;

int cmp( const void *a , const void *b )
{
  Student aa = *(Student*)a;
  Student bb = *(Student*)b;
  if(aa.lv != bb.lv)
    return aa.lv < bb.lv;
  else if(aa.de+aa.cai != bb.de+bb.cai)
    return (bb.de+bb.cai) > (aa.de+aa.cai);
  else if(aa.de != bb.de)
    return bb.de > aa.de;
  else
    return aa.ID > bb.ID;
}



int main()
{
    Student stu[100001];
    int N, L, H;
    scanf("%d %d %d", &N, &L, &H);

    int i, m=N;
    for(i=0; i<N; i++)
    {
        scanf("%d %d %d", &stu[i].ID, &stu[i].de, &stu[i].cai);
        //stu[i].sum = stu[i].de+stu[i].cai;

        if(stu[i].de<L || stu[i].cai<L)
        {
            stu[i].lv=5;
            m--;
        }
        else if(stu[i].de >= H&&stu[i].cai>=H) stu[i].lv = 1;
        else if(stu[i].de >= H && stu[i].cai<H)  stu[i].lv = 2;
        else if(stu[i].de >= stu[i].cai) stu[i].lv = 3;
        else stu[i].lv = 4;
    }

    qsort(stu, N, sizeof(stu[0]), cmp);

    printf("%d\n", m);

    for(i=0; i<N; i++)
    {
        if(stu[i].lv == 1)
            printf("%d %d %d\n", stu[i].ID, stu[i].de, stu[i].cai);
    }
    for(i=0; i<N; i++)
    {
        if(stu[i].lv == 2)
            printf("%d %d %d\n", stu[i].ID, stu[i].de, stu[i].cai);
    }
    for(i=0; i<N; i++)
    {
        if(stu[i].lv == 3)
            printf("%d %d %d\n", stu[i].ID, stu[i].de, stu[i].cai);
    }
    for(i=0; i<N; i++)
    {
        if(stu[i].lv == 4)
            printf("%d %d %d\n", stu[i].ID, stu[i].de, stu[i].cai);
    }


}








上一篇下一篇

猜你喜欢

热点阅读