1018. 询问队员身高
单点时限: 2.0 sec
内存限制: 256 MB
ECNU 篮球队教练陈老师选拔了一批篮球队员。对于篮球运动,队员身高是重要因素之一,陈老师的记忆力不好,他经常会向助理教练询问身高第,高的人是谁。助理教练不胜其烦,想请你帮忙写个程序回答陈老师的询问。
备注:每个队员的身高都各不相同。
输入格式
第一行是一个整数 t,表示测试数据组数。
对于每组测试数据:
第一行是两个整数n,m (1 <n< 50,1< m< 50),n表示队员的人数,m表示询问的次数
第二行有 n 个整数,a1, a2,a3,...,an,依次为第1个到第n 个队员的身高(1 ≤i≤n , 170 < ai< 230).
第三行有 m 个整数,b1,b2,b3,...,b,b,表示教练陈老师的第j个询问,询问身高第 b,高的队员编号 (1 < j< m,1 ≤ ы≤ n)
输出格式
每组测试数据输出一行,每行输出m 个整数,依次表示所求队员的编号。两个整数之间用一个空格分开,每行的最后有一个换行符
样例
input
2 3 1 228 205 190 3 5 3 223 179 217 195 193 3 4 5
output
3 4 5 2
#include<iostream>
#include<algorithm>
using namespace std;
struct node{
int id;
int h;
}A[100];
bool cmp(node x,node y){
return x.h>y.h;
}
int main()
{
int T,n,m;
cin>>T;
while(T--){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>A[i].h;
A[i].id=i;
}
sort(A+1,A+n+1,cmp);
while(m--){
int k;
cin>>k;
cout<<A[k].id<<" ";
}
cout<<endl;
}
return 0;
}
1019.排序
单点时限: 2.0 sec
内存限制: 256 MB
有 N个1到 1000 之间的整数1 ≤ N ≤ 100,对于其中重复的数,只保留个,把其余相同的数去掉。然后再按照个位数字进行升序排序,如果个位数字相同,则小的数排在前面。
输入格式
第 1 行: 整数 T (1 ≤ T ≤ 10) 为问题数。
第 2~2 xT+1行:每一个问题两行,第一行整数个数 N,第二行 N个用个空格分隔的正整数。
输出格式
对于每个问题,输出一行问题的编号(0 开始编号,格式:case #0:等)然后在一行中输出经去重和排序后的正整数,两个数之间用一个空格分隔。最后个数后没有空格。行未尾输出一个换行符。
样例
input
2 10 20 40 32 67 40 20 89 300 400 15 18 2 1 2 1 2 1 2 1 20 20 40 32 67 40 89 300 400 15
output
case #0: 20 40 300 400 32 15 67 89 case #1: 20 40 300 400 1 2 32 15 67 89
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a, int b)
{
if (a % 10 != b % 10)
return a % 10 < b % 10;
else
return a < b;
}
int main()
{
int T, i, j, m, k = -1;
int list[1001], s[100];
cin >> T;
while (T--)
{
for (i = 0; i < 1001; i++)
list[i] = 0;
k++;
int n;
cin >> n;
for (i = 0; i < n; i++)
{
cin >> m;
if (list[m] != 1)
list[m] = 1;
}
for (i = 0, j = 0; i < 1001; i++)
{
if (list[i] == 1)
s[j++] = i;
}
sort(s, s + j, cmp);
cout << "case #" << k << ":" << endl;
for (i = 0; i < j; i++)
{
if (i != j - 1)
cout << s[i] << " ";
else
cout << s[i] << endl;
}
}
return 0;
}