宇航局准备招收一批科研人员从事月球探索的航空科研工作。这个职位来了很多应聘者,宇航局对众多应聘者进行综合素质考试,最终会选出x名综合得分排名靠前应聘者。目前考试已经结束了,宇航局需要根据目前考试的成绩计算出,如果要选出x个分数靠前的人,分数线应该划到多少分?请你写一个程序来帮助宇航局计算分数线。
比如:如果有10名选手参加考试,他们的得分如下
100 99 98 97 96 95 94 93 92 91 90
如果要选出3名分数靠前的人,那么分数线应该划在98分。
输入格式
第一行是一个整数n,代表参加考试的人数(n<=1000)
第二行有n个整数,用空格隔开,代表n个人的考试分数(注意:不存在成绩一样的分数)
第三行有一个整数x(x < n),代表宇航局要选出的人数
输出格式
一个整数,代表如果要选出x个人,宇航局应当划出的分数线。
输入/输出例子1
输入:
8
100 90 98 92 85 70 88 96
2
输出:
98
代码如下:
#include<bits/stdc++.h>
using namespace std;
long long n,x,a[2000];
int l(int x,int y)
{return x>y;
}
int main(){cin>>n;for(int i=1;i<=n;i++)cin>>a[i];cin>>x;sort(a+1,a+n+1,l);cout<<a[x];return 0;
}
佛山创文要求大家要遵守交通规则,发扬尊老爱幼精神。文文想做一个关于公交文化的调查。他专门为排队上车发明了一套叫做“愧疚指数”的分析系统,就是在队列中把人分为三等:第一等为优先级最高,最需要照顾的老人、小孩、孕妇等,应该最优先上车,优先代号为1;第二等是普通女人,为了发扬绅士风度,男人是要让女人先上车的,但优先级低于一等,优先代号为2;第三等是普通男人,优先级最低,应该排在最后面,优先代号为3。所谓的“愧疚指数”是指队列中一个人后面有多少人的优先级比他高,如队列中有5个人分别为:3 2 1 2 1,那么这5个人的“愧疚指数”分别为:4 2 0 1 0。现在已经知道一个队列,请你帮文文算出队列中每个人的“愧疚指数”。
输入格式
第一行是一个正整数n,表示一共有多少个人排队。
第二行有n个用空格隔开的正整数,它们从左至右给出了队列中n个人的优先代号。
对于80%的数据,n≦10000;
对于100%的数据,n≦200000。
输出格式
输出一行:有n个用空格分开的正整数,代表队列中每个人的“愧疚指数”。
输入/输出例子1
输入:
5
3 2 1 2 1
输出:
4 2 0 1 0
代码如下:
#include<bits/stdc++.h>
using namespace std;
long long n,a[200005],s1,s2;
int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];if(a[i]==1)s1++;if(a[i]==2)s2++;}for(int i=1;i<=n;i++){if(a[i]==1){cout<<0<<" ";s1--;}if(a[i]==2){cout<<s1<<" ";s2--;}if(a[i]==3){cout<<s1+s2<<" ";}}return 0;
}
给出一系列整数,输出所有的“支撑数”。支撑数是这样一种数:它不在第一个,也不在最后一个,而且比左边和右边相邻的数都大。
输入格式
第一行1个整数n,表示数的个数,3<=n<=100。
第二行n个整数,每两个数之间用一个空格隔开。
输出格式
按读入顺序,一次输出一行若干个支撑数,每两个数之间用一个空格隔开。
输入/输出例子1
输入:
14
1 3 2 4 1 5 3 9 7 10 8 23 85 43
输出:
3 4 5 9 10 85
代码如下:
#include<bits/stdc++.h>
using namespace std;
long long a,b[200];
int main(){ cin>>a;for(int i=1;i<=a;i++)cin>>b[i];for(int i=2;i<=a-1;i++){if(b[i]>b[i-1]&&b[i]>b[i+1])cout<<b[i]<<" ";}return 0;
}
小S来到一块阶梯地,这一块阶梯地具有连续的n小块地,每一小块地都有一定的高度,如果连续m段地的高度相同,那么我们称这连续一段地的平地值为m。现在给出这一块阶梯地每一块地的高度值,请试编写一个程序,把这块阶梯地平地值最大者找出来,并输出该平地值。
输入格式
第一行一个正整数n ,n<=10000.
第二行n个正整数,表示地的高度。
输出格式
最大平地值
输入/输出例子1
输入:
10
1 2 2 3 3 3 4 5 5 6
输出:
3
代码如下:
#include<bits/stdc++.h>
using namespace std;
long long maxx=1,n,a[10005],s=1;
int main(){cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<n;i++) {if(a[i]==a[i+1])s++;if(s>maxx)maxx=s;if(a[i]!=a[i+1])s=1;}cout<<maxx;return 0;
}
最近有 n个开心的事,每句话都有一个正整数开心值(人啊,就是要开心)。开心小哥想知道连续 m个开心值的和的最小值是多少,但是由于最近忙于开心,开心小哥只好请你编个程序告诉他。
输入格式
一行有两个用空格隔开的整数,分别代表 n和 m。1<=m<=n<=100000。
第 2 到第 (n + 1) 行,每行一个整数,第 (i + 1) 行的整数 a_i代表第 i件事的开心值 a_i,a_i<=10000。
输出格式
输出一行一个整数,表示连续 m 个开心值的和的最小值
输入/输出例子1
输入:
8 3
1
4
7
3
1
2
4
3
输出:
6
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[100005],s,minn;
int main(){cin>>n>>m;for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=m;i++)minn=minn+a[i];for(int i=1;i<=n-m+1;i++){s=0;for(int j=i;j<=i+m-1;j++){s=s+a[j];}if(s<minn)minn=s;}cout<<minn;return 0;
}
人比人,气死人;鱼比鱼,难死鱼。小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度。参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只鱼的可爱程度,很显然整数越大,表示这只鱼越可爱,而且任意两只鱼的可爱程度可能一样。由于所有的鱼头都朝向左边,所以每只鱼只能看见在它左边的鱼的可爱程度,它们心里都在计算,在自己的眼力范围内有多少只鱼不如自己可爱呢。请你帮这些可爱但是鱼脑不够用的小鱼们计算一下。
输入格式
第一行输入一个整数 n,表示鱼的数目,n<=100。
第二行内输入 n个整数,用空格间隔,依次表示从左到右每只小鱼的可爱程度,数据范围[0,10^8]。
输出格式
一行输出 n个整数,用空格间隔,依次表示每只小鱼眼中有多少只鱼不如自己可爱。
输入/输出例子1
输入:
6
4 3 0 5 1 2
输出:
0 0 0 3 1 2
代码如下:
#include<bits/stdc++.h>
using namespace std;
long long n,a[100005],s;
int main(){cin>>n;for(int i=1;i<=n;i++){s=0;cin>>a[i];for(int j=i-1;j>=1;j--)if(a[j]<a[i])s++;cout<<s<<" ";}return 0;
}
又到学期末,小明迎来了又一次的期末考试。虽然每学期都要考试,但是这次期末考试对小明来说意义重大。因为小明的女神妈妈说,如果小明这次考了全班前三名就给他买一台笔记本电脑。虽说小明没有十足的信心,但是女神妈妈的话不能不听啊。
考完试后,小明拿到了全班的成绩单,这张成绩单是按学号顺序排好的。小明很想知道班里到底有多少人分数比他高,现在就请你帮帮他,帮他数一下到底有多少人的分数比他高吧。
输入格式
输入数据的第一行是一个正整数T,表示测试数据的组数,接下来有T组测试数据。
每组数据包括两行。
第一行有两个正整数N,K(0<N<1000,0<K<=N),分别表示成绩单上总共的学生数目,和小明的学号。
第二行有N个整数Xi(0<=Xi<=100)分别表示各个学生的成绩,以学号递增顺序给出,第一个学生学号为1。
输出格式
对于每组数据,请在一行里输出班里一共有多少个学生成绩高于小明。
输入/输出例子1
输入:
1
3 2
81 72 63
输出:
1
代码如下:
#include<bits/stdc++.h>
using namespace std;
long long n,x,y,a[20000];
int main(){cin>>n;for(int i=1;i<=n;i++){int s=0;cin>>x>>y;for(int j=1;j<=x;j++)cin>>a[j];for(int j=y-1;j>=1;j--)if(a[j]>a[y])s++;for(int j=y+1;j<=x;j++)if(a[j]>a[y])s++;cout<<s<<endl;for(int j=1;j<=x;j++)a[j]=0;}return 0;
}
已知一个数列的前几个数是: 1, 1, 2, 3, 5, 8, 13, 21,….. 编程实现输入一个整数N,输出第N项是多少。例如输入4 输出3。N小于等于20。
输入格式
输入t ,随后输入t个要查找的数
输出格式
t行,分别表示要查找的数
输入/输出例子1
输入:
5
1
2
3
4
5
输出:
1
1
2
3
5
代码如下:
#include<bits/stdc++.h>
using namespace std;
long long n,a[100000],x;
int main(){cin>>n;a[1]=1,a[2]=1;for(int i=3;i<=100000;i++)a[i]=a[i-1]+a[i-2];for(int i=1;i<=n;i++){cin>>x;cout<<a[x]<<endl;}return 0;
}
N个小朋友手拉手站成一个圆圈,从第一个小朋友开始循环报数,报到M的那个小朋友退到圈外,然后他的下一位重新报"1"。这样继续下去,直到最后只剩下一个小朋友,他原来站在什么位置上呢?
输入格式
仅一行,有两个数N和M,其中N表示小朋友的人数,M表示报到数。1<N<1000,M<=N
输出格式
仅一个数,留下的小朋友的编号。
输入/输出例子1
输入:
8 3
输出:
7
代码如下:
#include<bits/stdc++.h>
using namespace std;
int n,z,s=0;
int main()
{cin>>n>>z;for(int i=2;i<=n;i++)s=(s+z)%i;s++;cout<<s;return 0;
}
Bessie把N(1≤N≤100)粒蓝色和橙色的珠子连成了一串,问有多少对珠子(相邻的)是不同颜色的。
输入格式
第一行,一个整数N;
第二行,N个数字(0或1),其中0表示橙色,1表示蓝色。
输出格式
输出相邻两粒珠是不同颜色的对数。
输入/输出例子1
输入:
6
1 0 0 1 1 1
输出:
2
输入/输出例子2
输入:
3
1 1 0
输出:
2
代码如下:
#include<bits/stdc++.h>
using namespace std;
long long n,a[105],s;
int main(){cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<n;i++)if(a[i]!=a[i+1])s++;if(a[1]!=a[n])s++;//因为珠子是圆形的,所以还要特殊判断一下cout<<s;return 0;
}
一年一度的NH小学生程序设计比赛结束啦!组委会公布了所有学生的成绩。现在HuangYongCong想设计一个程序,先将成绩从高到低排,成绩相同则按年级从低到高排,然后查询每个学生有多少人的排名比他高并且年级还低于他?
输入格式
一行一个正整数n(1<=n<=200),表示参赛人数。
第2~n+1行,每行两个正整数,s(0<=s<=400)、g(1<=g<=6),之间用一个空格隔开,分别表示学生的成绩和年级。
输出格式
n行,每行只有一个正整数,其中第i行表示排第i名的学生前面有k个学生排名比他高,且年级比他低。
输入/输出例子1
输入:
5
300 5
200 6
350 4
400 6
250 5
输出:
0
0
1
1
3
代码如下:
#include<bits/stdc++.h>
using namespace std;
int n,a[205],b[205];
int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i]>>b[i];}for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){if(a[i]<a[j]){swap(a[i],a[j]);swap(b[i],b[j]);}if(a[i]==a[j]){swap(a[i],a[j]);if(b[i]>b[j])swap(b[i],b[j]);}}}for(int i=1;i<=n;i++){int s=0;for(int j=1;j<=i;j++)if(b[i]>b[j])s++;cout<<s<<endl;}return 0;
}
为了提高大家的信息学水平,WU老师连同一些优秀同学建立了一个校内C++题库。题库中目前只有n道题,第i道题的难易程度用ti表示,这n道题目根据易到难的顺序已排好。现在ZhangHu同学设计了m道难度为dj的题目,WU老师准备人他把这m道题都放到题库中,使得题库中的题目仍然是又易到难的顺序排好的。
输入格式
第一行,两个整数n,m。
第二行,n个正整数ti,表示题库中每道题的难度。
第三行,m个正整数dj,表示待插入的每道题的难度。
1<=ti<=32767 , 1<=dj<=32767 , 1<=n<=1000 , 1<=m<=1000。
输出格式
一行,若干个用空格隔开的正整数,表示插入新题后题库的试题难度情况。
输入/输出例子1
输入:
5 1
1 1 2 3 7
1
输出:
1 1 1 2 3 7
代码如下:
#include<bits/stdc++.h>
using namespace std;
long long a[100005],n,m;
int main(){cin>>n>>m;for(int i=1;i<=n+m;i++)cin>>a[i];sort(a+1,a+n+m+1);for(int i=1;i<=n+m;i++)cout<<a[i]<<" ";return 0;
}