查找
题目描述
中考成绩出来了,许多考生想知道自己成绩排名情况,于是考试委员会找到了你,让你帮助完成一个成绩查找程序,考生只要输入成绩,即可知道其排名及同名次的人有多少。
输入格式
第一行一个正整数 n(1<=n<=1500),表示一共有 n 个考生;
第二行一个正整数 k(1<=k<=n),表示一共有 k 个待查分数;
第三行 n 个数是以空格隔开的从大到小排列的 n 个学生成绩;
第四行 k 个数是待查的成绩。
输出格式
共输出 k 行,每行三个数,分别用一个空格隔开:第一个数为待查成绩所对应的名次;第二个数为同名次的人数;第三个数为分数高于该成绩的人数。
若查找不到,本行只输出一个单词“fail!”(fail后面加一个惊叹号,引号不输出)。
样例数据 1
输入
1 2 3 4
| 10 2 580 570 565 564 564 534 534 534 520 520 564 520
|
输出
分析
有点麻烦的模拟题,要分好几种情况,慢慢来就好,本来想用STL写的,结果写挂了…
源码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n, k, sum = 1, sl = 0, x = 0; int a[1600] = {0}, b[1600] = {0}; cin >> n >> k; for (register int i = 1; i <= n; i++) cin >> a[i]; for (register int i = 1; i <= k; i++) cin >> b[i]; for (register int j = 1; j <= k; j++) { for (register int i = 1; i <= n; i++) { if (b[j] < a[i] && (a[i]^a[i + 1])) sum++; if (b[j] < a[i]) x++; if (b[j] == a[i]) sl++; } if (sl == 0) cout << "fail!\n"; else cout << sum << " " << sl << " " << x << "\n"; sum = 1, sl = 0, x = 0; } return 0; }
|