日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++学习之路 | PTA乙级—— 1055 集体照 (25 分)(精简)

發布時間:2024/7/23 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++学习之路 | PTA乙级—— 1055 集体照 (25 分)(精简) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1055 集體照 (25 分)
拍集體照時隊形很重要,這里對給定的 N 個人 K 排的隊形設計排隊規則如下:
每排人數為 N/K(向下取整),多出來的人全部站在最后一排;
后排所有人的個子都不比前排任何人矮;
每排中最高者站中間(中間位置為 m/2+1,其中 m 為該排人數,除法向下取整);
每排其他人以中間人為軸,按身高非增序,先右后左交替入隊站在中間人的兩側(例如5人身高為190、188、186、175、170,則隊形為175、188、190、186、170。這里假設你面對拍照者,所以你的左邊是中間人的右邊);
若多人身高相同,則按名字的字典序升序排列。這里保證無重名。
現給定一組拍照人,請編寫程序輸出他們的隊形。
輸入格式:

每個輸入包含 1 個測試用例。每個測試用例第 1 行給出兩個正整數 N(≤10
?4
?? ,總人數)和 K(≤10,總排數)。隨后 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

#include<iostream> #include<string> #include<vector> #include<map> #include<set> #include<algorithm> using namespace std; bool cmp(pair<string, int>p, pair<string, int>q) {if (p.second != q.second)return p.second > q.second;else return p.first < q.first; } int main() {int n, h;string str;int a;cin >> n >> h;pair<string, int>p;vector<pair<string, int>>v;vector<string>v_new;for (int i = 0; i < n; i++){cin >> str >> a;p.first = str;p.second = a;v.push_back(p);}sort(v.begin(), v.end(),cmp);int h_new = v.size() / h;int last = v.size() % h + h_new;for (int j = 0; j < last; j++){if (j % 2 == 0){v_new.push_back(v[j].first);}else{v_new.insert(v_new.begin(), 1, v[j].first);}}for (int i = 0; i < last; i++){if (i == 0)cout << v_new[i];elsecout << " "<< v_new[i] ;}v_new.clear();cout << endl;for(int i=last;i<v.size();i+=h_new){int a = 0;for (int j = i; j < i+h_new; j++){if (a % 2 == 0){v_new.push_back(v[j].first);a++;}else{v_new.insert(v_new.begin(), 1, v[j].first);a++;}}for (int i = 0; i < h_new; i++){if (i == 0)cout << v_new[i];elsecout << " " << v_new[i];}cout << endl;v_new.clear();}} 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的C++学习之路 | PTA乙级—— 1055 集体照 (25 分)(精简)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。