0
已解决
叶子煊
中级光能
中级光能
题目描述
2018年全国参加高考人数达975万,高考总分750分。现给出某个范围(小组,班级,学校,区,市,省等)参考高考的人数n,以及每一个人的高考成绩,请统计输出哪个分数的人最多。
程序输入说明
2行,第一行一个正整数n,表示参加高考人数;第二行为高考成绩。
程序输出说明
2行,第一行一个正整数,为最多的人得到的分数;第二行一个正整数,为得到这个分数的人数。如果两个分数的人数一样,输出分数较大的那个。
程序输入样例
5
695 680 702 630 695
程序输出样例
695
2
数据范围及提示
1<=n<=1000000,0<每个分数都是正整数<=750。
这是我写的代码,我用了筒排,还是超时
。。。。。
#include<iostream>
using namespace std;
long long a[1000001],b[1001],n,fs,rs;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
b[a[i]]++;
}
for(int i=750;i>=2;i++)
{
if(b[i]>b[i-1])
{
fs=i;
rs=b[i];
}
}
cout<<fs<<endl<<rs;
}
错在哪啊
DALAO找找错,哈
叶子煊在2018-08-10 13:37:22追加了内容
还需要回答我用筒排为什么会超时哦
DALAO们
fighting!!!!
0
已采纳
王欣怡
新手光能
新手光能
说实话我做对了,不过没用排序。。。
上答案!
wait......
首先,要用格式化输入输出。
要找最大值:
long long n,c[1000001],a[1000001],maxn,a1;//定义,不懂往下看
cin>>n;//可以不用scanf
for(int i=1;i<=n;i++)
{
输入a[i];//scanf
c[a[i]]++;//类似桶排思想
}
for(int i=1;i<=n;i++)
{
if(c[a[i]]>=maxn)//判断这个数有没有比最大值大
{
if(c[a[i]]==maxn)//如果等于
{
maxn=max(c[a[i]],maxn);//谁大输出哪个
a1=max(a[i],a1);
}
else//否则
{
maxn=c[a[i]];//直接赋值就行
a1=a[i];
}
}
}
输出a1;(换行)//printf
输出maxn;//printf
望采纳,我急需酷町豆
1
1
贾文卓
高级光能
高级光能
不要排序,边输入边和最优解作比较就行了。时间复杂度O(n)。
贾文卓在2018-08-10 13:57:54追加了内容
对不起,看错题目了,请忽略......
0
0
0
0