世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的 150%150\%150% 划定,即如果计划录取 m 名志愿者,则面试分数线为排名第 m×150m \times 150m×150(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。
现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。
第一行,两个整数 n,m(5≤n≤5000,3≤m≤n)n,m(5 \leq n \leq 5000,3 \leq m \leq n)n,m(5≤n≤5000,3≤m≤n) ,中间用一个空格隔开,其中 n 表示报名参加笔试的选手总数,m 表示计划录取的志愿者人数。输入数据保证 m×150%m \times 150\%m×150% 向下取整后小于等于 n。
第二行到第 n+1 行,每行包括两个整数,中间用一个空格隔开,分别是选手的报名号 k(1000≤k≤9999)k(1000 \leq k \leq 9999)k(1000≤k≤9999)和该选手的笔试成绩 s(1≤s≤100)s(1 \leq s \leq 100)s(1≤s≤100)。数据保证选手的报名号各不相同。
第一行,有 2 个整数,用一个空格隔开,第一个整数表示面试分数线;第二个整数为进入面试的选手的实际人数。
从第二行开始,每行包含 2 个整数,中间用一个空格隔开,分别表示进入面试的选手的报名号和笔试成绩,按照笔试成绩从高到低输出,如果成绩相同,则按报名号由小到大的顺序输出。
输入
6 3
1000 90
3239 88
2390 95
7231 84
1005 95
1001 88
输出
88 5
1005 95
2390 95
1000 90
1001 88
3239 88
#include
#include
#include
using namespace std;
int i,j,cnt,pass=0; //cnt计划录取人数 ,pass通过分数
struct score{int k,s; //k报名号 s笔试成绩
}cte[5010]; //contestant 选手 bool mycmp(score a,score b){return(a.s>b.s || a.s == b.s && a.kint n,m; //n代表选手总数 m代表计划录取人数 cin>>n>>m;for(i=1; i<=n; i++){ //输入 cin>>cte[i].k>>cte[i].s;}sort(cte+1,cte+n+1,mycmp);cnt=m*1.5;int temp=cnt;for(i=1; i<=n; i++){if(temp){pass=cte[i].s;temp--;}else{ //若有分数相同的个数加1 if(cte[i].s == pass){cnt++;}else{break;}} }cout<cout<
他在地形图上标记了 N 个点,每个点 PiP_iPi 都有一个坐标 (xi,yi,zi)(x_i,y_i,z_i)(xi,yi,zi)。所有点对中,高度值 z 不会相等。HKE 准备从最低的点爬到最高的点,他的攀爬满足以下条件:
(1) 经过他标记的每一个点;
(2) 从第二个点开始,他经过的每一个点高度 z 都比上一个点高;
(3) HKE 会飞,他从一个点 PiP_iPi爬到 PjP_jPj的距离为两个点的欧几里得距离。即,(Xi−Xj)2+(Yi−Yj)2+(Zi−Zj)2\sqrt{(X_i-X_j)^2+(Y_i-Y_j)^2+(Z_i-Z_j)^2}(Xi−Xj)2+(Yi−Yj)2+(Zi−Zj)2
现在,HKE 希望你能求出他攀爬的总距离。
第一行,一个整数 N 表示地图上的点数。
接下来 N 行,三个整数 xi,yi,zix_i,y_i,z_ixi,yi,zi 表示第 i 个点的坐标。
一个实数,表示 HKE 需要攀爬的总距离(保留三位小数)
输入
5
2 2 2
1 1 1
4 4 4
3 3 3
5 5 5
输出
6.928
#include
#include
#include
#include
using namespace std;
int i,j;
double d; //表示总距离
struct distan{int x,y,z;
}dis[50010]; bool mycmp(distan a,distan b){return(a.zint n; //n代表选手总数 m代表计划录取人数 cin>>n;for(i=1; i<=n; i++){ //输入 cin>>dis[i].x>>dis[i].y>>dis[i].z;}sort(dis+1,dis+n+1,mycmp);//排序 for(i=1; i //求总距离 d+=sqrt(pow(dis[i].x-dis[i+1].x,2)+pow(dis[i].y-dis[i+1].y,2)+pow(dis[i].z-dis[i+1].z,2)); } cout<
cjf 君想调查学校 OI 组每个同学的生日,并按照年龄从大到小的顺序排序。但 cjf 君最近作业很多,没有时间,所以请你帮她排序。
输入共有 n+1 行,
第 1 行为 OI 组总人数 n;
第 2 行至第 n+1 行分别是每人的姓名 s、出生年 y、月 m、日 d。
输出共有 n 行,
即 n 个生日从大到小同学的姓名。(如果有两个同学生日相同,输入靠后的同学先输出)
输入
3
Yangchu 1992 4 23
Qiujingya 1993 10 13
Luowen 1991 8 1
输出
Luowen
Yangchu
Qiujingya
#include
#include
#include
#include
using namespace std;
int i,j;
struct birthday{int y,m,d,id; //year month day string name;
}bir[50010]; bool mycmp(birthday a,birthday b){return(a.yb.id ); //年龄从大到小 ,生日相同,输入靠后的先输出
}
int main(){int n; cin>>n;for(i=1; i<=n; i++){ //输入 cin>>bir[i].name>>bir[i].y>>bir[i].m>>bir[i].d;bir[i].id=i;}sort(bir+1,bir+n+1,mycmp);//排序 for(i=1; i<=n; i++){ //输出 cout<
设有 n 个正整数 a1…ana_1 \dots a_na1…an ,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。
第一行有一个整数,表示数字个数 n。
第二行有 nn 个整数,表示给出的 n 个整数 aia_iai 。
一个正整数,表示最大的整数
输入
3
13 312 343
输出
34331213
#include
using namespace std;
string s[30],temp;
int i,j,suma;
void msort(int n) //冒泡排序
{for(i=1; ibool flag=true;for(j=1; j<=n-i; j++){if(s[j]+s[j+1] //字符串拼接后较大在前 temp=s[j],s[j]=s[j+1],s[j+1]=temp;flag=false;}}if(flag) break;}
}
int main(){int n; cin>>n;for(i=1; i<=n; i++){ //输入 cin>>s[i];}msort(n);for(i=1; i<=n; i++){ //输出 cout<