题目描述
期末考试结束了,学校已批改完所有试卷,已知某年级共有 n 位学生和他们对应的成绩。老师们想知道这个年级学生成绩的分布情况,以便下学期更好的开展教学,因此现在需要统计一些数据如下:
1)全校最低分、最高分的成绩及人数;
2)同分最多的成绩和人数,如果相同,依次由低分到高分输出;
3)分值 p 和 q 之间(包含 p 和 q)人数。
请同学们编程帮忙统计吧。
输入格式
输入数据共 3 行:
第一行:一个整数 n,表示学校某年级总人数;
第二行:共有 n 个由空格分隔的正整数,表示每一位学生成绩。
第三行:共有 2 个由空格分隔的正整数 p 和 q。
输出格式
共 4 行:
第一行 :2 个由空格分隔的正整数,对应最低的成绩及人数;
第二行 :2 个由空格分隔的正整数,对应最高的成绩及人数;
第三行:多个由空格分隔的正整数,对应多个相同分数最多的成绩及人数。
第 4 行 :1 个正整数,对应成绩 p 和 q 之间人数。
输入输出样列
输入样例1:复制
11 80 85 80 78 90 95 95 80 98 78 95 85 95
输出样例1:复制
78 2 98 1 80 3 95 3 5
说明
数据范围:1 ≤ 学生人数 n ≤ 10000,0 ≤ 每个学生成绩 ≤ 500
【耗时限制】1000ms 【内存限制】128MB
答案
#include
#include
#include
#include
#include
#include
using namespace std;
int f[9999999];
int x[9999999];
int main(){
int n,a,o=0,maxn=-1,ma,mi=-1,mx=9999999;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a;
x[a]++;
if(a>mi){
mi=a;
}
if(mx>a){
mx=a;
}
}
int p,q;
cin>>p>>q;
for(int i=0;i<=999999;i++){
if(x[i]!=0){
o++;
}
if(x[i]>maxn){
maxn=x[i];
ma=i;
}
}
cout<
if(x[i]==maxn&&i!=ma&&x[i]!=0){
cout< }
}
cout<
for(int i=0;i<=9999;i++){
if(x[i]!=0){
if(i>=p&&i<=q){
cnt+=x[i];
}
}
}
cout<
}



