#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;
}
}
网友评论