【ACM之旅】数列特征2

来源:互联网 发布:wineskin for mac 编辑:程序博客网 时间:2024/05/01 06:25

一、[题目] 数列特征2

时间限制:1.0s   内存限制:512.0MB

问题描述

给出n个数,找出这n个数的第二大值,第二小值,平方和

输入格式

第一行为整数n,表示数的个数。(2<=n<=100)
第二行有n个数,为给定的n个数,每个数的绝对值都小于1000。

输出格式

输出三行,每行一个整数。第一行表示这些数中的第二大值,第二行表示这些数中的第二小值,第三行表示这些数的平方和。

样例输入

5
100 100 -30 30 1

样例输出

100
1
21801


二、[代码]:

PS. 数列特征2 是上一道题 数列特征1 的变形,题目由原来的求最值变化成了求第二最值,这样一来擂台法明显不管用了,这里我们就需要利用到排序算法来对数据进行先行排序,排序后的数列我们不难得出第二最值,以下列出我的解法。

算法一: 排序最值法(利用C快速排序库函数qsort())

#include <stdio.h>#include <stdlib.h>int cmp(const void *a, const void *b){    return *(int*)a-*(int*)b;  }  int main(){    int h=0,t,n,m,a[100];    scanf("%d",&n); m=n;    while(n--){      scanf("%d",&t);      h+=t*t;      a[n]=t;  }    qsort(a,m,4,cmp);    printf("%d\n%d\n%d\n",a[m-2],a[1],h);  return 0;}


欢迎评论和转载,转载请注明文章出处,我对此表示最真诚的敬意!

0 0