码迷,mamicode.com
首页 > 编程语言 > 详细

ZZNU 次小次大值(有坑点不能简单地排序一下,直接查靠谱)

时间:2018-05-21 00:03:34      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:info   can   emd   正整数   space   复制   中间   only   class   

C : 次小次大值

 
Progress Bar

时间限制:0 Sec 内存限制:0 MiB
提交:782 答案正确:166

 

 


题目描述

小A:小B你会唱小星星么;

小B:一闪一闪亮晶晶,很简单的了;

小A:那你会找一个数列的最大最小值么?
小B:当然了,很简单了。我还会找次小值次大值呢?
小A:次小次大值?
小B:次小值是比最小值大,除去最小值剩下的数列的最小值。次大值同理。但是如果没有次小值,次小值则为最小值加一,同理如果没有次大值,次大值则最大值减一;
小A:...

输入

输入在第一行给出一个正整数n(0<n<100)。第二行给出n个整数(均属于int)(迷茫的小A提醒你,这是个多实例哟)

输出

输出这个数列的次小值和次大值(中间空格隔开,输出占一行)

样例输入

复制
5
1 2 3 4 5

样例输出

复制
2 4
#include <stdio.h>
#include <string.h>
#include <math.h>
#define inf 0x3f3f3f3f

// 次小次大值不能和最小最大值相等
int main()
{
    int n,Fmax,Fmin,Smax,Smin,x;
    while(~scanf("%d",&n))
    {
        Fmax=Smax=-inf;
        Fmin=Smin=inf;
        while(n--)
        { 
            scanf("%d",&x);
            if(x>Fmax)
            {
                Smax=Fmax;
                Fmax=x;
            }
            else if(x>Smax&&x!=Fmax)
            {
                Smax=x;
            }
            if(x<Fmin)
            {
                Smin=Fmin;
                Fmin=x;
            }
            else if(x<Smin&&x!=Fmin)
            {
                Smin=x;
            }
        }
        printf("%d %d\n",Smin!=inf ? Smin : Fmin+1,Smax!=-inf ? Smax : Fmax-1);
    }
    return 0;
}

 

ZZNU 次小次大值(有坑点不能简单地排序一下,直接查靠谱)

标签:info   can   emd   正整数   space   复制   中间   only   class   

原文地址:https://www.cnblogs.com/yi-ye-zhi-qiu/p/9065171.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!