美文网首页
1055 集体照 (25 分)

1055 集体照 (25 分)

作者: 79d12e22ec53 | 来源:发表于2019-07-22 14:04 被阅读0次
#include<stdio.h>

typedef struct student
{
    char name[9];
    int height;
}stu;

int heightCMP(const void *a, const void *b)
{
    stu aa = *(stu *)a;
    stu bb = *(stu *)b;
    if(bb.height != aa.height)
        return bb.height - aa.height;
    else
        return strcmp(aa.name, bb.name);
}

int myPrint(stu stus[1001], int start, int end)
{
    int num = end - start + 1;
    int mid = num/2;
    int i, countA=0, countB=0;
    int a[1001];

    if(num%2 == 0)
    {
        for(i=0; i<num; i++)
        {
            if(i<mid)
            {
                printf("%s ", stus[end].name);
                end -= 2;
            }
            else
            {
                if(countB)
                    printf(" ");
                printf("%s", stus[start].name);
                start +=2;
                countB++;
            }

        }

    }
    else
    {
        end -= 1;
        for(i=0; i<num; i++)
        {
            if(i<mid)
            {
                printf("%s ", stus[end].name);
                end -= 2;
            }
            else
            {
                if(countB)
                    printf(" ");
                printf("%s", stus[start].name);
                start +=2;
                countB++;
            }

        }

    }

}

int main()
{
    stu stus[10001];
    int N, K, i, j;
    scanf("%d %d", &N, &K);

    for(i=0; i<N; i++)
        scanf("%s %d", stus[i].name, &stus[i].height);

    qsort(stus, N, sizeof(stus[0]), heightCMP);
    int start=0, end = N/K+N%K-1;
    for(i=0; i<K; i++)
    {
        myPrint(stus, start, end);
        printf("\n");
        start = end+1;
        end += N/K;
    }

}

相关文章

网友评论

      本文标题:1055 集体照 (25 分)

      本文链接:https://www.haomeiwen.com/subject/pptwlctx.html