1055

// 部分正确!
//

#include "stdafx.h"
#include<iostream>
#include<string>
#include<utility>
#include<vector>
#include<algorithm>


using namespace std;



int main()
{
    unsigned n, k;
    cin >> n >> k;

    //读取输入数据
    string tmp_name;
    unsigned tmp_high;
    vector<pair<string, unsigned>> data;
    for (unsigned i = 0; i < n; ++i)
    {
        cin >> tmp_name >> tmp_high;
        data.push_back(make_pair(tmp_name, tmp_high));
    }

    //根据身高和姓氏排序
    //sort(data.begin(), data.end(), [](pair<string, unsigned> lh, pair<string, unsigned> rh) {return lh.first < rh.first; });
    stable_sort(data.begin(), data.end(), [](pair<string, unsigned> lh, pair<string, unsigned> rh) {return lh.second < rh.second; });

//对输入的数据进行切片
    vector<vector<pair<string, unsigned>>> format_data;
    unsigned m = floor(n*1.0 / k*1.0);
    unsigned last_m = n - m*(k - 1);
    auto beg = data.begin();
    for (size_t i = 0; i < k;++i)
    {
        if (i != (k - 1))
        {
            vector<pair<string, unsigned>> tmp(beg, beg + m);
            sort(tmp.begin(), tmp.end(), [](pair<string, unsigned> lh, pair<string, unsigned> rh) {return lh.first < rh.first; });
            stable_sort(tmp.begin(), tmp.end(), [](pair<string, unsigned> lh, pair<string, unsigned> rh) {return lh.second > rh.second; });
            format_data.push_back(tmp);
            beg = beg + m;
        }
        else
        {
            vector<pair<string, unsigned>> tmp(beg, data.end());
            sort(tmp.begin(), tmp.end(), [](pair<string, unsigned> lh, pair<string, unsigned> rh) {return lh.first < rh.first; });
            stable_sort(tmp.begin(), tmp.end(), [](pair<string, unsigned> lh, pair<string, unsigned> rh) {return lh.second > rh.second; });
            format_data.push_back(tmp);
            beg = beg + m;
        }
        
    }

    //根据规则排序
    vector<vector<string>> out_format(k-1, vector<string>(m," "));
    out_format.push_back(vector<string>(last_m,""));

    unsigned now_middle;
    int change_r_l = 0;
    int r_l = 0;


    for (size_t i = 0; i < format_data.size(); ++i)
    {
        now_middle = format_data[i].size()/2+1;
        for (size_t j = 0; j < format_data[i].size(); ++j)
        {
            out_format[i][now_middle - 1] = format_data[i][j].first;
            now_middle = now_middle- pow(-1, j)*(j + 1);
        }
    }

    for (int i=out_format.size()-1;i>=0;--i)
    {
        for (size_t j = 0; j < out_format[i].size(); ++j)
        {
            cout << out_format[i][j];
            if (j != (out_format[i].size() - 1))
                cout << " ";
        }
        if(i!=0)
            cout << endl;
    }

    system("pause");
    return 0;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 比利时摄影师Wim Denijs的这些风光作品虽然不能用壮丽华美来形容,但在平静的同时,也有着相当不错的氛围和情感...
    无邪书生阅读 595评论 1 3
  • 最近天气很给力,肉肉出彩了
    苍山暮雪阅读 495评论 11 9
  • 那是二零零二年秋收后,在那年的第一场雪还没有来的时候,我坐着的长途大巴车,把我扔在了广深高速公路长安出口的天桥上。...
    高能故事阅读 267评论 0 0
  • 这一年,似乎既漫长又短暂。 因为梦想,在这一年里不断沉淀。 凌晨有多少人进入梦乡, 时光在一次又一次的考试中渐渐褪...
    墨念苏阅读 410评论 0 0