ABC

Question

Solution

Idea

Time Complexity: O(1)O(1)

This problem is not hard, it is a variant of counting sort. But since the size is small and fixed, so I didn't implement a sorting algorithm since it is tedious in C.

  1. Sort the three numbers first

  2. Then using char ('A', 'B' or 'C') readed from the input minus 'A' as the index to visit the sorted array.

Code

https://github.com/mendax1234/Coding-Problems/blob/main/kattis/abc/abc.c
#include <stdio.h>

long find_min(long a, long b, long c)
{
  long min = a;
  if (b < min)
  {
    min = b;
  }
  if (c < min)
  {
    min = c;
  }
  return min;
}

long find_max(long a, long b, long c)
{
  long max = a;
  if (b > max)
  {
    max = b;
  }
  if (c > max)
  {
    max = c;
  }
  return max;
}

long find_mid(long a, long b, long c, long min, long max)
{
  if (a != min && a != max)
  {
    return a;
  }
  if (b != min && b != max)
  {
    return b;
  }
  if (c != min && c != max)
  {
    return c;
  }
}

int main()
{
  long temp1, temp2, temp3;
  scanf("%ld %ld %ld", &temp1, &temp2, &temp3);
  long a = find_min(temp1, temp2, temp3);
  long c = find_max(temp1, temp2, temp3);
  long b = find_mid(temp1, temp2, temp3, a, c);
  long sorted[3] = {a, b, c};
  char index1, index2, index3;
  scanf("\n%c%c%c", &index1, &index2, &index3);
  printf("%ld ", sorted[index1-'A']);
  printf("%ld ", sorted[index2-'A']);
  printf("%ld\n", sorted[index3-'A']);
}

Last updated