题目:https://pintia.cn/problem-sets/994805260223102976/problems/994805272021680128
这题有点麻烦的
核心代码是第37和41行,涉及到3个变量,每隔两个赋值
代码
#include<cstdio>#include<string>#include<vector>#include<iostream>#include<algorithm>using namespace std;const int maxn = 10010;struct student{string name;int height;};vector<student> stu_vec;bool cmp(student a, student b){if(a.height!=b.height) return a.height>b.height;else return a.name<b.name;}int main(){int n, k, m;scanf("%d %d", &n, &k);stu_vec.resize(n);for(int i = 0; i < n ; i++){cin>>stu_vec[i].name>>stu_vec[i].height;}sort(stu_vec.begin(), stu_vec.end(), cmp);//最后一排int row = k, t = 0;while(row > 0){if(row == k){m = n - (n / k) * (k - 1);} else m = n / k ;vector<string> ans(m);int mid = m / 2;ans[mid] = stu_vec[t].name;int j = mid + 1;for(int i = t + 2; i < t + m; i += 2){ans[j++] = stu_vec[i].name;}j = mid - 1;for(int i = t + 1; i < t + m; i += 2){ans[j--] = stu_vec[i].name;}cout << ans[0];for(int i = 1; i < ans.size(); i++) cout<<" " + ans[i];cout << endl;t += m;row--;}return 0;}
