ερωτήσεις

Ο διαγωνισμός ξεκινά μια συγκεκριμένη στιγμή, οπότε δίνονται και τα θέματα και κρατά για λίγες ώρες (συνήθως 4 ή 5). Τα θέματα είναι κάποιος αριθμός προβλημάτων προς λύση (συνήως 3 ως 8). Σκοπός κάθε ομάδας είναι να λύσει σωστά όσο το δυνατόν περισσότερα προβλήματα σε όσο το δυνατόν λιγότερο χρόνο. Οποιαδήποτε στιγμή κατά τη διάρκεια του διαγωνισμού, κάθε ομάδα, όποτε αισθάνεται ετοιμη, υποβάλει (με ορισμένη διαδικασία) ένα πρόγραμμα ως υποψήφια λύση ενός προβλήματος. Η απάντηση από τους κριτές έρχεται κάποιο χρονικό διάστημα μετά την υποβολή και το υποβληθέν πρόγραμμα κρίνεται σωστό ή λάθος, με κάποια αιτιολογία. Προφανώς κάθε ομάδα έχει το δικαίωμα να κάνει όσες υποβολές θέλει, για κάθε και για όσα προβλήματα θέλει, χωρίς άλλο περιορισμό εκτός του χρονικού ορίου του διαγωνισμού, προκειμένου να στείλει σωστές λύσεις για όσα περισσότερα πρόβληματα μπορεί (μέχρι ενδεχομένως να τα λύσει όλα σωστά).

Η βαθμολογία και κατάταξη των ομάδων μετά το πέρας του διαγωνισμού γίνεται ως εξής: Οι όμαδες ταξινομούνται πρώτα με τον αριθμό των προβλημάτων που έχουν λύσει και έπειτα με το συνολικό χρόνο επίλυσης. Πιο συγκεκριμένα:

Η τελική κατάταξη γίνεται λοιπόν πρώτα με τον αριθμό των σωστά λυμένων προβλημάτων και έπειτα με το συνολικό αριθμό βαθμών ποινής.

Ένα παράδειγμα για τρεις ομάδες: H (1) λύνει τρία προβλήματα, το πρώτο στη 1 ώρα, το δεύτερο στις 2 ώρες και το τρίτο στις 3 ώρες και τριάντα λεπτά (από την αρχή του διαγωνισμού) ενώ έχει και λάθος υποβολές σε ένα τέταρτο πρόβλημα. Η (2) κάνει λάθος στο πρώτο στα 40 λεπτά, λάθος το τέταρτο στα 50 λεπτά, στέλνει σωστά το δεύτερο στη μία ωρα, στέλνει σωστά το πρώτο στη 1 ώρα και 20 λεπτά. Η (3) στέλνει σωστά το δεύτερο πρόβλημα στις 2 ώρες και το τέταρτο πρόβλημα στις 2 ώρες και 40 λεπτά. Η κατάταξη θα είναι ως εξής:
ΚατάταξηΟμάδαΑριθμός λυμένων προβλημάτωνΒαθμοί ποινής
(1)360+120+210=390
(2)215+60+80=155
(3)2120+160=280

Τι σημαίνει σωστό πρόγραμμα

Στους διαγωνισμούς προγραμματισμού για πανεπιστήμια, το σωστό πρόγραμμα κρίνεται μόνο από τον εξωτερικό έλεγχο της λειτουργίας του (έλεγχος με τη μέθοδο του μαύρου κουτιού). Κάθε πρόγραμμα που υποβάλουμε ως υποψήφια λύση για ένα πρόβλημα, ελέγχεται με κάποια (κρυφά) δεδομένα εισόδου από την κριτική επιτροπή του διαγωνισμού (τους κριτές (judges)). Αν το πρόγραμμα βγάζει τις αντίστοιχες σωστές εξόδους, σε αποδεκτό χρόνο, τότε το πρόγραμμα θεωρείται σωστό. Το πρόγραμμα μπορεί να κριθεί ως λαθεμένο σύμφωνα με τις ακόλουθες αιτιολογίες:

Στους διαγωνισμούς αυτούς, δε λαμβάνεται καθόλου υπόψη η μορφή του προγράμματος που υποβάλουμε (πχ. σχόλια, identation, εύλογα ονόματα μεταβλητών κλπ.). Τα χαρακτηριστικά αυτά βοηθάνε μόνο το συγγραφέα του προγράμματος και (κυρίως) το συνεργάτη του που θα τον βοηθήσει στη διόρθωση λαθών. Θα πρέπει λοιπόν να χρησιμοποούνται με μέτρο και μόνο αν δεν επιβαρύνουν άνισα τη βαθμολογία της ομάδας.

Κύριοι σκοποί μια ομάδας που θέλει να συμμετάσχει με αξιώσεις είναι να αντιμετωπίσει κάθε πρόβλημα με τα ακόλουθα κατά νου:

Οι σκοποί αυτοί βέβαια είναι όλη η ουσία του διαγωνισμού, και στην προετοιμασία μας, με αυτά κυρίως τα θέματα θα ασχοληθούμε.

Στρατηγικές για καλή απόδοση στο διαγωνισμό

Οι εκφωνήσεις των θεμάτων

Μεγάλη σημασία πρέπει να δοθεί στο γεγονός ότι η εκφώνηση δεν λέει ποτέ ψέματα. Αν πχ. λέγεται ότι η είσοδος θα είναι ένας θετικός ακέραιος, τότε αποκλείεται να δοθεί ως είσοδος ένα αλφαριθμητικό (string) ή ένας αρνητικός. Μπορεί όμως η εκφώνηση να περιέχει κάποια ασάφεια, ή να μην διευκρινίζει κάτι. Δεν πρέπει να κάνουμε δικές μας παραδοχές! Με την κατάλληλη διαδικασία ρωτάμε για διευκρίνηση από τους κριτές, ή αν γίνεται, λαμβάνουμε όλες τις δυνατές περιπτώσεις υπόψην. Πχ. στο προηγούμενο παράδειγμα, δεν είναι εντελώς σαφές αν η είσοδος μπορεί να είναι το 0 (μηδέν). Είτε ρωτούμε, είτε λύνουμε το πρόβλημα και για το 0.

Πολύ σημαντικό είναι επίσης ότι η εκφώνιση αλλά ίσως και οι κανόνες του διαγωνισμού προκαθορίζουν τη μορφή των δεδομένων της εισόδου και της εξόδου που θα πρέπει να υποστηρίζει το πρόγραμμά μας. Πχ. μπορεί να ζητείται η είσοδος και η έξοδος να είναι συγκεκριμένα αρχεία ή αντίθετα οι προκαθορισμένες (standard input, standard output). Μπορεί να καθορίζεται ότι η είσοδος θα είναι αριθμοί σε μία μόνο γραμμή ενώ η έξοδος ένας αριθμός σε κάθε σειρά, χωρίς άλλα σχόλια, παραπάνω κενά, παραπάνω αλλαγές γραμμής, λέξεις, επεξηγήσεις, σχόλια για debugging κλπ.

Εν ολίγοις: ΜΕΓΑΛΗ ΠΡΟΣΟΧΗ ΣΤΙΣ ΕΚΦΩΝΗΣΕΙΣ ΓΙΑΤΙ ΟΔΗΓΟΥΝ ΣΕ (ΑΔΙΚΑ) ΛΑΘΗ

Συγγραφή του προγράμματος

Επειδή η ομάδα αποτελείται από τρία ατομα, ο υπολογιστής είναι ένας, και ο χρόνος πολύτιμος είναι προφανές ότι αυτός που κάθεται μπροστά στον υπολογιστή δεν πρέπει να τον δεσμεύει από τους συναγωνιστές του περισσότερο απ'όσο είναι απαραίτητο. Οι ενέργειες για να επιτευχθεί όσο το δυνατόν μεγαλύτερη οικονομία του αγαθού αυτού ειναι οι εξής (όπως έχουν κυρίως προταθεί από το μεγάλο δάσκαλο Δημήτρη Στάικο και σύμφωνα με την εμπειρία μας):