【1109】Group Photo (25分)【双端队列/逻辑】

简介: 【1109】Group Photo (25分)【双端队列/逻辑】【1109】Group Photo (25分)【双端队列/逻辑】
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<algorithm>  
#include<map>
#include<vector>
#include<queue> 
#include<string>
using namespace std;  
//双端队列,注意逻辑if for和边界判断 
struct node{
  string name;
  int height;
};
bool cmp(struct node a,struct node b){
  return a.height != b.height ?a.height>b.height:a.name<b.name;
}
int main(){   
  int  N,K;
  cin>>N>>K;//共N人K排
  node t;
  deque<node> v;//双端队列
  int N1=N;
  while(N--){
    cin>>t.name>>t.height;
    v.push_back(t);
  }//v队列装入N人结构体
  sort(v.begin(),v.end(),cmp);//结构体排序
  N=N1;
  int p=N/K;
  int lastrow=N-p*(K-1);//末排人数
  deque<node> vv;//用于处理一小排
  for(int i=0;i<v.size()||vv.size();i++){
    if(i<lastrow){//设定lastrow对最后一排特殊处理,但不在这内部打印
      if(i%2==0)  vv.push_back(v[i]);
      else vv.push_front(v[i]);
    }else{
      if(i==lastrow||vv.size()==p){//当一排排完
        for(int j=0;j<vv.size();j++){//遍历该排的人
          cout<<vv[j].name;
          if(j!=vv.size()-1)
            cout << " ";
          else 
            cout<<endl;
        }
        vv.clear();//一定要清空该排队列
      }
      if(i<v.size()) //这一句一定要加,否则会爆内存
      if(vv.size()%2==0)//交替插入
          vv.push_back(v[i]);
      else
          vv.push_front(v[i]);
    }
  }
  system("pause");
    return 0;   
}
相关文章
|
5月前
|
JSON 算法 前端开发
2722. 根据 ID 合并两个数组
2722. 根据 ID 合并两个数组
32 0
|
JSON JavaScript 数据格式
查找一组数据中一组或多组数据(filter和find的区别)
查找一组数据中一组或多组数据(filter和find的区别)
86 0
|
测试技术
List分割:等分成n个list;指定元素个数n等分
List分割:等分成n个list;指定元素个数n等分
661 0
|
SQL 关系型数据库 MySQL
操作delete或者update语句,加个limit或者循环分批次删除
操作delete或者update语句,加个limit或者循环分批次删除
|
SQL Oracle 关系型数据库
SQL学习之使用order by 按照指定顺序排序或自定义顺序排序
我们通常需要根据客户需求对于查询出来的结果给客户提供自定义的排序方式,那么我们通常sql需要实现方式都有哪些,参考更多资料总结如下(不完善的和错误望大家指出): 一、如果我们只是对于在某个程序中的应用是需要按照如下的方式排序,我们只需在SQL语句级别设置排序方式:
528 0
|
JSON 数据格式 开发者
PUT 和 POST-更新Ⅱ之局部更新|学习笔记
快速学习 PUT 和 POST-更新Ⅱ之局部更新。
128 0
|
SQL 关系型数据库 MySQL
十一、操作delete或者update语句,加个limit或者循环分批次删除
十一、操作delete或者update语句,加个limit或者循环分批次删除
288 0
|
JSON 数据格式 开发者
PUT 和 POST_更新Ⅱ之局部更新 | 学习笔记
快速学习 PUT 和 POST_更新Ⅱ之局部更新
137 0
SwiftUI—如何调整记录在List列表里的顺序
SwiftUI—如何调整记录在List列表里的顺序
255 0
SwiftUI—如何调整记录在List列表里的顺序
|
C++ 容器
queue以及使用举例--C++基础
queue以及使用举例--C++基础
116 0
queue以及使用举例--C++基础