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; }