1055 集体照 (25 分)

拍集体照时队形很重要,这里对给定的 N 个人 K 排的队形设计排队规则如下:

  • 每排人数为 /(向下取整),多出来的人全部站在最后一排;

  • 后排所有人的个子都不比前排任何人矮;

  • 每排中最高者站中间(中间位置为 /,其中 m 为该排人数,除法向下取整);

  • 每排其他人以中间人为轴,按身高非增序,先右后左交替入队站在中间人的两侧(例如5人身高为190、188、186、175、170,则队形为175、188、190、186、170。这里假设你面对拍照者,所以你的左边是中间人的右边);

  • 若多人身高相同,则按名字的字典序升序排列。这里保证无重名。

现给定一组拍照人,请编写程序输出他们的队形。

输入格式:

每个输入包含 1 个测试用例。每个测试用例第 1 行给出两个正整数 N(≤,总人数)和 K(≤,总排数)。随后 N 行,每行给出一个人的名字(不包含空格、长度不超过 8 个英文字母)和身高([30, 300] 区间内的整数)。

输出格式:

输出拍照的队形。即K排人名,其间以空格分隔,行末不得有多余空格。注意:假设你面对拍照者,后排的人输出在上方,前排输出在下方。

输入样例:

10 3
Tom 188
Mike 170
Eva 168
Tim 160
Joe 190
Ann 168
Bob 175
Nick 186
Amy 160
John 159

输出样例:

Bob Tom Joe Nick
Ann Mike Eva
Tim Amy John
//过程借鉴网上的,侵删。
//判断那部分可以省略,没有在那里设坑
//比较字符串大小时要用strcpy
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn = 10010; struct Student{char name[10];int height; }stu[maxn];bool cmp(Student a,Student b){if(a.height != b.height) return a.height > b.height;else return strcmp(a.name,b.name) < 0; }void print(int index,int n){//index is what the number of the Studets will be printing next int a[n];a[n/2] = index;int left = n / 2 - 1,right = n / 2 + 1, i = index + 1;while(left >= 0 || right < n){if(left >= 0) a[left--] = i++;if(right < n) a[right++] = i++;}for(int i = 0; i < n; i++){printf("%s",stu[a[i]].name);if(i < n - 1) printf(" ");}printf("\n"); }void solve(int n,int k){sort(stu,stu+n,cmp);int num = n / k;print(0,num+n%k);for(int i = num+n%k ; i < n ; i += num)print(i,num); }int main(){int n,k;char str[10];scanf("%d%d",&n,&k);int he,cnt = 0;for(int i = 0; i < n; i++){getchar();scanf("%s %d",str,&he);if(he >= 30 && he <= 300){//stu[i].name = str;strcpy(stu[i].name,str); //strcpy的用法:第一个字符串是被赋值的stu[i].height = he;cnt++;}}n = cnt;solve(n,k);return 0; }

 

转载于:https://www.cnblogs.com/wanghao-boke/p/10395365.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/385203.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

暂时记一下

1. 用epoll的ET模式实现一个服务器框架 要求&#xff1a; 接受client连接建立&#xff0c;出错处理处理client关闭连接以及出错TCP边界问题&#xff0c;其实就是TCP粘包 写了3页的代码2. 进程间通信方式&#xff0c;怎样实现在两个进程间互斥访问共享内存&#xff0c;我说给共…

1058 选择题 (20 分)

批改多选题是比较麻烦的事情&#xff0c;本题就请你写个程序帮助老师批改多选题&#xff0c;并且指出哪道题错的人最多。 输入格式&#xff1a; 输入在第一行给出两个正整数 N&#xff08;≤ 1000&#xff09;和 M&#xff08;≤ 100&#xff09;&#xff0c;分别是学生人数和多…

1060 爱丁顿数 (25 分)

英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力&#xff0c;还定义了一个“爱丁顿数” E &#xff0c;即满足有 E 天骑车超过 E 英里的最大整数 E。据说爱丁顿自己的 E 等于87。 现给定某人 N 天的骑车距离&#xff0c;请你算出对应的爱丁顿数 E&#xff08;≤&a…

数值的整数次方

题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 class Solution {public:double Power(double base, int exponent) {double res 1.0;for(int i exponent; i ! 0; i / 2){if(i % 2 ! 0)res * base;base * base;}return exponen…

1061 判断题 (15 分)

判断题的评判很简单&#xff0c;本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分。 输入格式&#xff1a; 输入在第一行给出两个不超过 100 的正整数 N 和 M&#xff0c;分别是学生人数和判断题数量。第二行给出 M 个不超过 5 的正整数&#xff0c;是每道题的…

1064 朋友数 (20 分)

如果两个整数各位数字的和是一样的&#xff0c;则被称为是“朋友数”&#xff0c;而那个公共的和就是它们的“朋友证号”。例如 123 和 51 就是朋友数&#xff0c;因为 123 51 6&#xff0c;而 6 就是它们的朋友证号。给定一些整数&#xff0c;要求你统计一下它们中有多少个不…

1067 试密码 (20 分)

当你试图登录某个系统却忘了密码时&#xff0c;系统一般只会允许你尝试有限多次&#xff0c;当超出允许次数时&#xff0c;账号就会被锁死。本题就请你实现这个小功能。 输入格式&#xff1a; 输入在第一行给出一个密码&#xff08;长度不超过 20 的、不包含空格、Tab、回车的非…

1065 单身狗 (25 分)

单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人&#xff0c;以便给予特殊关爱。 输入格式&#xff1a; 输入第一行给出一个正整数 N&#xff08;≤ 50 000&#xff09;&#xff0c;是已知夫妻/伴侣的对数&#xff1b;随后 N 行&#xff0c…

存储

一、多重继承&#xff08;无虚函数覆盖&#xff09; 下面&#xff0c;再让我们来看看多重继承中的情况&#xff0c;假设有下面这样一个类的继承关系。注意&#xff1a;子类并没有覆盖父类的函数。 class Base1 { public: virtual void f() { cout << "Base1::f&quo…

【对象程序设计面向】虚继承

B C虚继承A&#xff0c;D public继承 B C &#xff0c;有A *a new D&#xff0c;a->fun(),fun是虚函数&#xff0c;并且B C都重写了&#xff0c;怎么保证a调用的是B重写的虚函数。 #include <iostream> using namespace std;class A { public:virtual void fun() { …

BTree和B+Tree详解

B 树是为了磁盘或其它存储设备而设计的一种多叉&#xff08;下面你会看到&#xff0c;相对于二叉&#xff0c;B树每个内结点有多个分支&#xff0c;即多叉&#xff09;平衡查找树。 B 树又叫平衡多路查找树。一棵m阶的B 树 (m叉树)的特性如下&#xff1a; 树中每个结点最多含…

【1】MySQL的四种事务隔离级别

二、事务的并发问题 1、脏读&#xff1a;事务A读取了事务B更新的数据&#xff0c;然后B回滚操作&#xff0c;那么A读取到的数据是脏数据 2、不可重复读&#xff1a;事务 A 多次读取同一数据&#xff0c;事务 B 在事务A多次读取的过程中&#xff0c;对数据作了更新并提交&#x…

MySQL的四种事务隔离级别

1. MySQL的四种事务隔离级别

__thread

__thread是GCC内置的线程局部存储设施&#xff0c;存取效率可以和全局变量相比。__thread变量每一个线程有一份独立实体&#xff0c;各个线程的值互不干扰。可以用来修饰那些带有全局性且值可能变&#xff0c;但是又不值得用全局变量保护的变量。 __thread使用规则&#xff1a…

eventfd(三)

1. 测试代码&#xff1a; //https://www.jianshu.com/p/d7ebac8dc9f8 #include <stdio.h> #include <unistd.h> #include <stdint.h> #include <pthread.h> #include <sys/eventfd.h> #include <sys/epoll.h>int event_fd -1;void *rea…

04-树4 是否同一棵二叉搜索树 (25 分)

给定一个插入序列就可以唯一确定一棵二叉搜索树。然而&#xff0c;一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树&#xff0c;都得到一样的结果。于是对于输入的各种插入序列&#xff0c;你需要判断它们…

strtol,strtoll,strtoul, strtoull函数的使用

#include<stdlib.h> // 这个是C标准库&#xff0c;与linux无关。这套函数是通用 long int strtol(const char *nptr, char **endptr, int base); long long int strtoll(const char *nptr, char **endptr, int base); unsigned long int strtoul(const char *nptr, char …

eventfd(一)

函数原型&#xff1a; 创建的时候可以传入一个计数器的初始值initval。 第二个参数flags在linux 2.6.26之前的版本是没有使用的&#xff0c;必须初始化为0&#xff0c;在2.6.27之后的版本flag才被使用。 #include <sys/eventfd.h> int eventfd(unsigned int initval, in…

gettimeofday

作用&#xff1a;需要打印代码执行到某处的时间&#xff0c;或者需要计算程序执行的时间差&#xff08;精确到微妙级&#xff09;。这时会用到gettimeofday函数&#xff0c;它可以返回自1970-01-01 00:00:00到现在经历的秒数。 #include <sys/time.h> int gettimeofday(…

02-线性结构2 一元多项式的乘法与加法运算 (20 分

设计函数分别求两个一元多项式的乘积与和。 输入格式: 输入分2行&#xff0c;每行分别先给出多项式非零项的个数&#xff0c;再以指数递降方式输入一个多项式非零项系数和指数&#xff08;绝对值均为不超过1000的整数&#xff09;。数字间以空格分隔。 输出格式: 输出分2行&…