Coding
  • Welcome
  • Baisc Knowledge
    • Vim
    • C
      • Library
    • Java
      • Setup
      • Java Basic
  • Kattis
    • Easy
      • A Second Opinion
      • A Shortcut to What?
      • A Stack of Gold
      • ACM Contest Scoring
      • ASCII kassi
      • Aaah!
      • Add Two Numbers
      • Adding Trouble
      • Afjörmun
      • Airfare Grants
      • Above Average
      • Akcija
      • Alphabet Spam
      • Amerískur vinnustaður
      • Anti-Palindrome
      • Apaxiaaaaaaaaaaaans!
      • Arithmetic Functions
      • Arm Coordination
      • Arrangement
      • Attendance
      • Autori
      • Average Character
      • Avion
      • Baby Bites
      • Babylonian Numbers
      • ABC
      • Aldur
      • Backspace
      • Bannorð
      • Barcelona
      • Basketball One-on-One
      • Batter Up
      • Beavergnaw
      • Bela
      • BergMál
      • Bergur*
      • Akureyri*
      • Best Compromise
      • Best Relay Team*
      • Besta gjöfin
      • Betting
      • Bijele
      • Bilað Lyklaborð
      • Bitte ein Bit
      • Blandað Best
      • Blaðra
      • Blaðra2
      • Bluetooth*
      • Booking a Room
      • Bottle Opening
      • Bounding Robots
      • Breaking Branches*
      • Bracket Matching*
      • Broken Swords
      • Building Pyramids
      • Bus
      • Bus Assignment
      • CPR Number
      • Call for Problems
      • Canadians, eh?
      • Candy Store
      • Cetiri
      • Cetvrta
      • Champernowne Verification
      • Chanukah Challenge
      • Chardonnay
      • Chocolate Division*
      • Chugging
      • Cinema Crowds 2
      • Class Field Trip
      • ASCII Kassi 2
      • Coffee Cup Combo
      • Cold-puter Science
      • Composed Rhythms
      • Cookies
      • Cooking Water
      • Cornhusker
      • Cosmic Path Optimization
      • Count the Vowels
Powered by GitBook
On this page
  • Question
  • Solution
  • Idea
  • Code
Edit on GitHub
  1. Kattis
  2. Easy

ABC

PreviousBabylonian NumbersNextAldur

Last updated 6 months ago

Question

Solution

Idea

Time Complexity: O(1)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://open.kattis.com/problems/abcopen.kattis.com
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']);
}