Third Best Price
Time limit: 2 s
Memory limit: 64 MB
Description
Steve would like to buy a new car. He isn’t wealthy, so he would prefer a reasonably cheap car. The only problem is that the quality of the cheapest cars is… let’s say questionable.
Thus Steve decided to make a list of car prices and to buy a car with the third lowest price.
You will be given a list of integers prices. The same price may occur multiple times in prices, but it should count only once in the ordering of available prices. See Example 2 for further clarification.
Find the third lowest price in this list. If there are less than three different car prices in prices, you should output -1.
Input Format
The first line is an integer N (1 <= N <= 50), the number of prices.
The next line contains of N space-separated integers prices (1 <= prices[i] <= 1000).
Output Format
An integer, the third lowest price, or -1 if there are less than three different car prices.
Sample Input 1
9 10 40 50 20 70 80 30 90 60
Sample Output 1
30
Sample Input 2
10 10 10 10 10 20 20 30 30 40 40
Sample Output 2
30
Note
The lowest price is 10, the second lowest is 20 and the third lowest is 30.
Sample Input 3
1 10
Sample Output 3
-1
Sample Input 4
5 80 90 80 90 80
Sample Output 4
-1
Code Solution
#include <stdio.h>
#include <stdlib.h>
int main()
{
int N,x,i,j,a = 0, pos = 0, temp;
int diff = 1, result = 0;
scanf("%d",&N);
if(N>=1 && N <= 50){
long int price[N];
while (a < N) {
if (scanf("%d", &x) != 1) break;
price[a] = x;
if (!(price[a] >=1 &&price[a] <=1000 )){
return 0;
}
a++;
}
for(i=0;i<N-1;i++){
pos=i;
for(j=i+1;j<N;j++){
if(price[j]<price[pos]){
pos=j;
}
}
if (pos!=i){
temp=price[pos];
price[pos]=price[i];
price[i]=temp;
}
}
for(i=0;i<N-1;i++){
if(price[i] != price[i+1]){
diff++;
if(diff == 3){
result = price[i+1];
}
}
}
if(diff<3){
printf("-1\n");
}
else{
printf("%d\n",result);
}
}
return 0;
}