目录:
题目:
有nn个数a1,a2,…,ana1,a2,…,an,请问这些数里面第三大的是哪一个。
输入格式
第一行一个整数nn。
接下来一行nn个整数,a1,a2,…,ana1,a2,…,an。
输出格式
一个数,表示答案。
样例输入
6
3 2 5 5 1 4
样例输出
4
样例解释
从大到小排序之后是5,5,4,3,2,15,5,4,3,2,1,这里面第三大是44。这里55出现了两次,当成两个数字。
数据范围
保证3≤n≤50000,1≤ai≤1093≤n≤50000,1≤ai≤109。
代码:
#include <bits/stdc++.h>
using namespace std;
int a[50001],n,i,j,t,maxid;
int main(){
cin>>n;
for(i=1;i<=n;i++){
cin>>a[i];
}
for(i=1;i<=3;i++){
maxid=i;
for(j=i+1;j<=n;j++){
if(a[j]>a[maxid]){
maxid=j;
}
}
t=a[i];
a[i]=a[maxid];
a[maxid]=t;
}
cout<<a[3]<<" ";
}
思路:
我的思路就是每循环一次就看一次当前最大的把它替换。