第一次训练赛-G

G - 众数问题

FZU - 1705

给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。

例如,S={1,2,2,2,3,5}。

多重集S的众数是2,其重数为3。

现在给你一个已经排好序的集合S,让你求出其众数和重数。

 

Input

输入只有一行,有一个整数n(1<=n<=100)开始,表示集合S中元素个数,接下来有n个由一个空格隔开的整数(-100~100), 为集合S的元素,元素从小到大或者从大到小给出。

Output

输出一行二个整数X和Y,X表示众数和Y为重数,用一个空格隔开。如果存在多个解,只需输出值最小的众数即可。

Sample Input

6 1 2 2 2 3 5
3 -1 -1 -1

Sample Output

2 3
-1 3

简单粗暴水题一个

但是由于也许是心情总是很乱,还是写错了一遍,也懒得优化到超级简了


#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <stack>
#include <queue>

using namespace std;

int main()
{
    int aft,n,mx,mxn,now,c;
    while (~scanf("%d",&n)) {
        scanf("%d",&aft);
        mx = 1;
        mxn = aft;
        c = 1;
        while (--n) {
            scanf("%d",&now);
            if (now == aft) {
                c++;
            }else {
                if (c>mx || (c==mx&&aft<mxn) ) {
                    mxn = aft;
                    mx = c;
                }
                c=1;
            }
            aft = now;
        }
        if (c>mx || (c==mx&&aft<mxn) ) {
            mxn = aft;
            mx = c;
        }
        printf("%d %d\n",mxn,mx);
    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值