#include <stdio.h>
#include <stdint.h>
#define MAX(A, B) ((A) > (B) ? (A) : (B))
#define MIN(A, B) ((A) < (B) ? (A) : (B))
void find_top_3(uint8_t *arr, uint8_t n) {
// Your logic here
if(n==0)
{
return;
}
else if(n == 1)
{
printf("%d ", arr[0]);
return;
}
else if(n == 2)
{
uint8_t min = MIN(arr[0], arr[1]);
uint8_t max = MAX(arr[0], arr[1]);
printf("%d ", max);
printf("%d ", min);
return;
}
uint8_t third = MIN(arr[0], MIN(arr[1], arr[2]));
uint8_t second = MAX(arr[0] ,MIN(arr[1], arr[2]));
uint8_t first = MAX(arr[0], MAX(arr[1], arr[2]));
for(uint8_t i=3; i<n; i++)
{
if(arr[i] >= first)
{
third = second;
second = first;
first = arr[i];
}
else if(arr[i] >= second)
{
third = second;
second = arr[i];
}
else if(arr[i] > third)
{
third = arr[i];
}
}
printf("%d ", first);
printf("%d ", second);
printf("%d ", third);
}
int main() {
uint8_t n;
scanf("%hhu", &n);
uint8_t arr[100];
for (uint8_t i = 0; i < n; i++) {
scanf("%hhu", &arr[i]);
}
find_top_3(arr, n);
return 0;
}
Input
6 10 90 20 80 70 30
Expected Output
90 80 70