1437: 王小二的求值问题
时间限制: 1 Sec 内存限制: 128 MB 提交: 141 解决: 31题目描述
题意超级简单,求一个序列的次大值。
输入
多组输入,每个测试实例占两行,包括一个整数n (1<n<1000000),接下来一行是n个int范围内的整数,求次大值;
输出
对于每个测试实例,输出序列的次大值,每个输出占一行。
样例输入
51 2 3 4 5
样例输出
4
方法一:冒泡排序。因为是求次大值,所以不需要排除所有数的大小,否则会超时。
方法二:用两个变量记录最大值和次大值。
注意!!!!!是多组输入(忽略了这句话错了一下午)
方法一AC代码:
#includeusing namespace std;const int maxn=1e6+10;int a[maxn];int main(){ int n,i,j; while(cin>>n&&n!=EOF) { for(i=0;i >a[i]; for(i=0;i<3;i++) for(j=0;j a[j+1]) { int t=a[j+1]; a[j+1]=a[j]; a[j]=t; } } cout< <
方法二AC代码:
#includeusing namespace std;int a[1000000+10];int main(){ int n,max1,max2; while(cin>>n&&n!=EOF) { for(int i=0;i >a[i]; max1=a[0]; max2=INT_MIN; for(int i=1;i =a[i]) { if(max2
方法三AC代码(sort):
#includeusing namespace std;const int maxn=1e6+10;int a[maxn];bool cmp(int a,int b){ return a>b;}int main(){ int n,i; while(~scanf("%d",&n)) { for(i=0;i