Αν η εκφώνηση είναι ακριβώς όπως λες, μία λύση θα ήταν:
1. βρες το μικρότερο από αυτά που έμειναν στον Α (αμαρκάριστα, δες βήμα 4)
2. βρες το μικρότερο από αυτά που έμειναν στον Β (αμαρκάριστα, δες βήμα 4)
3. Βάλε το μικρότερο από τα δύο στον Γ
4. Μαρκάρισε στον Α (ή Β) αυτό που έβαλες στον Γ ώστε να μην ξανασχοληθείς
5. Αν υπάρχουν ακόμα στοιχεία σε έναν από τους 2 αρχικούς, πήγαινε στο βήμα 1
Στον πίνακα που έμεινε με στοιχεία:
6. βρες το μικρότερο από αυτά που έμειναν
7. Βάλε το στον Γ
8. Μαρκάρισέ το στον αρχικό ώστε να μην ξανασχοληθείς
9. Αν υπάρχουν ακόμα στοιχεία στον αρχικό, πήγαινε στο βήμα 7
Ένα προβληματάκι αφορά στην αρχικοποίηση του min για κάθε ένα από τους πίνακες, σε κάθε νέα σάρωση.. Αρχικά (βήμα 0) θα μπορούσες να βάλεις το μεγαλύτερο από τα δύο Α[1], Β[1]. Όμως, από τη στιγμή που έρθει η σειρά κάποιου από αυτά να μπει στον Γ, πλέον χρειάζεσαι καινούργιο max.. Οπότε, αξίζει ίσως, πριν ξεκινήσεις, να βρεις (βήμα 0) την μέγιστη τιμή για κάθε πίνακα και να την φυλάξεις για να μπορείς να κάνεις την αρχικοποίηση του min σε κάθε νέα σάρωση.
Όσο για το "μαρκάρισμα", θα μπορούσε να χρησιμοποιήσεις έναν παράλληλο πίνακα με λογικές μεταβλητές (έναν Εφυγε_Α[Ν], για τον Α και εναν Εφυγε_Β[Μ] για τον Β). Αρχικοποιείς όλες τις τιμές σε ΨΕΥΔΗΣ κα, για κάθε στοιχείο που επιλέγεται να μπει στον Γ, δηλώνεις αυτή την επιλογή, σηκώνοντας σημαία "του" (αποδίδοντας την τιμή ΑΛΗΘΗΣ)
Επίσης, θα μπορούσες ίσως να αποφύγεις μία από τις δύο "σαρώσεις". Συγκεκριμένα, τη σάρωση του πίνακα που "έχασε" στο προηγούμενο πέρασμα. Για αυτόν, το min που έχει βρεθεί (από το προηγούμενο πέρασμα) ισχύει ακόμα.. Έτσι, μειώνει στο μισό τον αριθμό των σαρώσεων που απαιτούνται. Σε πρώτη φάση βέβαια, μπορείς να παραλείψεις αυτή τη λεπτομέρεια..
Είναι μια πρόχειρη ιδέα που μπορείς να δοκιμάσεις..