1. 新的篮球队1
题目描述
很多人希望加入中国篮球队,每个人都有一个身高hhh(单位:纳米)。
教练打算让所有人中身高最高的5个人首发出场,请列出这5个人的身高。
输入格式
第一行,一个整数nnn,表示应招的队员人数。
之后nnn行,每行一个整数hhh,分别为每个球员的身高,保证所有队员的身高互不相同。
输出格式
输出为555行,分别为身高第1,2,3,4,51,2,3,4,51,2,3,4,5高的人的身高。
样例 #1
样例输入 #1
7
1500000000
1600000000
1700000000
1800000000
1900000000
2000000000
2100000000
样例输出 #1
2100000000
2000000000
1900000000
1800000000
1700000000
样例 #2
样例输入 #2
10
1623741820
2147483640
1728490184
1204748364
1833238548
1518993456
1937986912
1414245092
2042735276
1309496728
样例输出 #2
2147483640
2042735276
1937986912
1833238548
1728490184
提示
5≤n≤7,500,0005 \le n \le 7,500,0005≤n≤7,500,000;
1100000000≤h≤21474836471100000000 \le h \le 21474836471100000000≤h≤2147483647;
答案
#include<bits/stdc++.h>
using namespace std;
int n, a[7500005];
int main()
{
ios::sync_with_stdio(0);
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
for (int i = 1; i <= 5; i++) {
for (int j = i + 1; j <= n; j++) {
if (a[j] > a[i])
swap(a[j], a[i]);
}
}
for (int i = 1; i <= 5; i++)
cout << a[i] << endl;
return 0;
}
2. 新的篮球队2
题目描述
很多人希望加入中国篮球队,每个人都有一个身高hhh(单位:纳米)。初始时,nnn个人按身高从高到低的顺序排好队了,但因为一些骚动,他们在队伍中的位置发生了变化。
不过好在变化的并不多,每个人现在的位置跟当初相差不超过555(例如,原先队伍中排在第100100100的人,现在一定在第95∼10595\sim 10595∼105范围内)
教练打算让所有人中身高分别为从高到低第a,b,c,d,ea,b,c,d,ea,b,c,d,e名的队员出场,请列出这555个人的身高。
输入格式
第一行,一个整数nnn,表示球员人数;
之后nnn行,每行一个整数hhh,为现在从前到后每个球员的身高;
之后555行,分别为555个整数a,b,c,d,ea,b,c,d,ea,b,c,d,e,保证555个数各不相同,且在1∼n1\sim n1∼n的范围内。
输出格式
输出为nnn行,每行一个整数,为当初(从高到低排好序的),从前到后每个球员的身高。
样例 #1
样例输入 #1
10
1937986919
1833238555
1728490191
1623741827
2042735283
1204748371
1100000007
1518993463
1414245099
1309496735
3
5
1
7
8
样例输出 #1
1833238555
1623741827
2042735283
1414245099
1309496735
提示
5≤n≤75000005 \le n \le 75000005≤n≤7500000;
1100000000≤h≤21474836471100000000 \le h \le 21474836471100000000≤h≤2147483647;
1≤a,b,c,d,e≤n1 \le a,b,c,d,e \le n1≤a,b,c,d,e≤n;
答案
#include<bits/stdc++.h>
using namespace std;
int n, a[7500005];
int main()
{
ios::sync_with_stdio(0);
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
for (int i = 1; i <= n; i++) {
for (int j = i; j > 1 && a[j] > a[j - 1]; j--) {
swap(a[j], a[j - 1]);
}
}
int pos;
for (int i = 1; i <= 5; i++) {
cin >> pos;
cout << a[pos] << endl;
}
return 0;
}
3. 新的篮球队3
题目描述
很多人希望加入中国篮球队,每个人都有一个身高hhh(单位:微米),这次只精确到微米是因为教练懒得量那么准了。
教练打算让所有人中身高分别为从高到低第a,b,c,d,ea,b,c,d,ea,b,c,d,e名的队员出场,不计并列(例如333个人并列第555名,我们就认为他们分列5,6,75,6,75,6,7名)。请列出这5个人的身高。
输入格式
第1行,1个整数nnn,表示应招的队员人数。
之后nnn行,每行111个整数hhh,为每个球员的身高,这次不保证所有球员的身高互不相同。
之后555行,分别为555个整数a,b,c,d,ea,b,c,d,ea,b,c,d,e,保证555个数各不相同,且在111~nnn的范围内。
输出格式
输出为5行,分别为身高从高到低的第a,b,c,d,ea,b,c,d,ea,b,c,d,e名的身高。
样例 #1
样例输入 #1
10
1116807
1575249
1750073
2043658
1208930
1311272
1127544
1950878
1877923
1337709
1
6
3
8
4
样例输出 #1
2043658
1337709
1877923
1208930
1750073
提示
【样例1解释】
所有球员按身高排序后为:
第1:2043658
第2:1950878
第3:1877923
第4:1750073
第5:1575249
第6:1337709
第7:1311272
第8:1208930
第9:1127544
第10:1116807
容易发现第1,6,3,8,41,6,3,8,41,6,3,8,4高的球员身高分别是:
2043658
1337709
1877923
1208930
1750073
【数据规模】
5≤n≤7,500,0005 \le n \le 7,500,0005≤n≤7,500,000;
1100000≤h≤21000001100000 \le h \le 21000001100000≤h≤2100000;
1≤a,b,c,d,e≤n1 \le a,b,c,d,e \le n1≤a,b,c,d,e≤n
答案
#include<bits/stdc++.h>
using namespace std;
int n,a[7500001],b[2100001],t;
int main(){
ios::sync_with_stdio(0);
cin >> n;
for(int i=1;i<=n;i++){
cin >> a[i];
b[a[i]]++;
}
int cur=1;
for(int i=2100001;i>=1;i--){
for(int j=1;j<=b[i];j++){
a[cur++] = i;
}
}
for(int i=1;i<=5;i++){
cin >> t;
cout << a[t] << endl;
}
return 0;
}
4. 新的篮球队4
题目背景
中国的篮球队表现不佳,教练打算从全国广招人才,重新组建篮球队。但他的水平有限,不太搞得清楚谁篮球打的好,所以只好选身高最高的。
来自某小学的555位校队队员看了国家队之前的比赛,觉得自己也有实力试一试。
题目描述
很多人希望加入中国篮球队,每个人都有一个身高hhh(单位:纳米)。初始时,已经有nnn个人按身高从高到低的顺序排好队了,但有5名同学来晚了,请按他们每个人的身高给他们安排合适的位置,使得他们进入队伍后,队伍仍是从高到低排列的。
请确定这5个人在队列中的位置(从前到后的第几个)并输出。
输入格式
第一行,一个整数nnn,表示已经排好队的球员人数。
之后nnn行,每行一个整数,为已经排好队的每个球员的身高。
之后555行,每行一个整数,分别为五名迟到同学的身高。
保证所有人的身高互不相同。
输出格式
输出为555行,分别为555位同学的位置(从前到后的第几个)。
555个数从小到大排列。
样例 #1
样例输入 #1
7
2100000000
2000000000
1900000000
1800000000
1700000000
1600000000
1500000000
1550000000
1650000000
1750000000
1850000000
1950000000
样例输出 #1
3
5
7
9
11
样例 #2
样例输入 #2
10
2042735283
1937986919
1833238555
1728490191
1623741827
1518993463
1414245099
1309496735
1204748371
1100000007
1100016807
1382475249
1722650072
2084943658
1244108929
样例输出 #2
1
6
10
12
14
提示
【样例1解释】
原有的777个人已经按身高排好了序,新来的555名同学加入后,所有121212个人的身高排序为:
2100000000
2000000000
1950000000
1900000000
1850000000
1800000000
1750000000
1700000000
1650000000
1600000000
1550000000
1500000000
容易看出新来的同学分列第3,5,7,9,113,5,7,9,113,5,7,9,11名。
【数据规模】
5≤n≤7,500,0005 \le n \le 7,500,0005≤n≤7,500,000;
1100000000≤h≤21474836471100000000 \le h \le 21474836471100000000≤h≤2147483647;
答案
#include<bits/stdc++.h>
using namespace std;
int n, a[7500005];
int main()
{
ios::sync_with_stdio(0);
cin >> n;
for (int i = 1; i <= n + 5; i++)
cin >> a[i];
for (int i = n + 1; i <= n + 5; i++)
for (int j = i + 1; j <= n + 5; j++)
if (a[j] > a[i])
swap(a[j], a[i]);
int ans[10];
for (int i = n + 1; i <= n + 5; i++) {
for (int j = i; j >= 1; j--) {
if (j != 1 && a[j] > a[j - 1])
swap(a[j], a[j - 1]);
else {
ans[i - n] = j;
break;
}
}
}
for (int i = 1; i <= 5; i++) {
cout << ans[i] << endl;
}
return 0;
}