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.pswp.cn/news/385203.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385203.shtml
英文地址,請注明出處:http://en.pswp.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行&…