很简单的two points问题
#include #include #include #include #include using namespace std; struct people{ char name[10]; int height; }arr[10005]; bool cmp(people A,people B){ if(A.height!=B.height) return A.height0; } int main(){ int N,K;scanf("%d %d",&N,&K); for(int i=0;i=1;i--){//K排 int left=1,right=N/K; if(i==K) right=N/K+N%K; int mid=right/2+1; int l=mid-1,r=mid+1; data[mid]=arr[flag--]; while(l>=left||r<=right){ if(l>=left){ data[l--]=arr[flag--]; } if(r<=right){ data[r++]=arr[flag--]; } } for(int j=1;j<=right;j++){ if(j!=1) printf(" "); printf("%s",data[j].name); if(j==right&&i!=1) printf("\n"); } } getchar(); return 0; }