#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
struct node {
string name;
int len;
bool operator<(const node b)const {
return len < b.len || (len == b.len && name >b.name);
}
};
void change(vector<node> &x)
{
int mid = x.size() / 2;
vector<node> te(x.rbegin(),x.rend());
int cnt = 0;
x[mid] = te[cnt++];
for (int t = 1;t < x.size() - mid;t++)
{
x[mid - t] = te[cnt++];
x[mid + t] = te[cnt++];
}
if (cnt == x.size() - 1) x[0] = te[cnt++];
}
int main()
{
int N, K;
cin >> N >> K;
vector<node> all(N);
vector<vector<node>> re(K);
for (int t = 0;t < N;t++)
cin >> all[t].name >> all[t].len;
sort(all.begin(), all.end());
int n = N / K;
for (int t = 0;t < K - 1;t++)
re[t].assign(all.begin()+t*n,all.begin()+(t+1)*n);
re[K - 1].assign(all.begin() + (K - 1)*n, all.end());
for (auto &x : re)
change(x);
for (auto it = re.rbegin();it != re.rend();it++)
{
cout << (*it)[0].name;
for (unsigned int t = 1;t < (*it).size();t++)
cout << " " << (*it)[t].name;
cout << endl;
}
}
1109. Group Photo (25)
最新推荐文章于 2021-11-12 21:53:38 发布