Once Bob needed to find the second order statistics of a sequence of integer numbers. Lets choose each number from the sequence exactly once and sort them. The value on the second position is the second order statistics of the given sequence. In other words it is the smallest element strictly greater than the minimum. Help Bob solve this problem.
The first input line contains integer n (1 ≤ n ≤ 100) — amount of numbers in the sequence. The second line contains n space-separated integer numbers — elements of the sequence. These numbers don't exceed 100 in absolute value.
If the given sequence has the second order statistics, output this order statistics, otherwise output NO.
4 1 2 2 -4
1
5 1 2 3 1 1
2
题意:找n个数中第2小的数,数据量很小,排序就可以了 但如果是数据量很大的情况下找第K小的数。。就不是很好做了
#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <string> #include <vector> using namespace std; #define LL long long int main() { int i,n,a[110]; while(cin>>n) { for(i=0;i<n;i++) cin>>a[i]; sort(a,a+n); for(i=1;i<n;i++) if(a[i]>a[i-1]) break; if(i<n) cout<<a[i]<<endl; else cout<<"NO"<<endl; } return 0; }