ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

Σχετικά έγγραφα
ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

ΕΛΛΗΝΙΚΗ ΕΤΑΙΡΕΙΑ ΕΠΙΣΤΗΜΟΝΩΝ ΚΑΙ ΕΠΑΓΓΕΛΜΑΤΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ GREEK COMPUTER SOCIETY

23 ος ΠΑΝΕΛΛΗΝΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΙΣΤΗΜΟΝΙΚΗ - ΟΡΓΑΝΩΤΙΚΗ ΕΠΙΤΡΟΠΗ

ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

Πρόγραμμα όρασης. Στη συνέχεια θα περιγράψουμε πώς δουλεύει το ρομπότ.

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Διαδικασιακός Προγραμματισμός

ΘΕΜΑ Α. Α2. Να αναφέρετε από τι εξαρτάται η επιλογή του καλύτερου αλγορίθμου ταξινόμησης. Μονάδες 4. Σελίδα 1 από 8

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΕΡΓΑΣΙΑ 3. Παίζοντας Sudoku. Ημερομηνία Ανάρτησης: 16/03/2018 Ημερομηνία Παράδοσης: 03/04/2018, 09:00

Αριθμήσιμα σύνολα. Μαθηματικά Πληροφορικής 5ο Μάθημα. Παραδείγματα αριθμήσιμων συνόλων. Οι ρητοί αριθμοί

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΗΜΕΡΟΜΗΝΙΑ: 6/04/2014

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ.

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός ΙI (Θ)

ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΗΡΕΣΙΩΝ 2005

ΕΡΓΑΣΙΑ 2. Κατασκευάζοντας Ημερολόγια. Ημερομηνία Ανάρτησης: 23/02/2018 Ημερομηνία Παράδοσης: 13/03/2018, 09:00

Μεταγλωττιστές. Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΑΠΡΙΛΙΟΣ 2019 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΘΕΜΑ Α

Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές»

Εργαλεία του JDK. Β.1 Εργαλεία του JDK. Β.2 Μεταγλωττιστής javac. Τα πιο βασικά εργαλεία του JDK είναι τα παρακάτω.

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

2.1 Αντικειµενοστρεφής προγραµµατισµός

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ )

ΦΡΟΝΤΙΣΤΗΡΙΟ Μ.Ε. «ΠΕΡΙ ΓΝΩΣΕΩΣ»

Ανάπτυξη και Σχεδίαση Λογισμικού

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΑΠΡΙΛΙΟΣ 2018 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΘΕΜΑ Α

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Προγραμματιστικά Εργαλεία και Τεχνολογίες για Επιστήμη Δεδομένων

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ - ΓΛΩΣΣΑ

ΑΕΠΠ Ερωτήσεις θεωρίας

Ακρότατα πίνακα, χωρίς min, max, μόνο με pos

3 Αλληλεπίδραση Αντικειμένων

ΕΡΓΑΣΙΕΣ ΟΝΤΟΚΕΝΤΡΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Δοκιμή και Αποσφαλμάτωση Testing and Debugging

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΦΡΟΝΤΙΣΤΗΡΙΑ ΠΡΟΟΔΟΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Διαδικασιακός Προγραμματισμός

Ηλεκτρονικοί Υπολογιστές

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Η δυαδική σχέση M ( «παράγει σε ένα βήμα» ) ορίζεται ως εξής: (q, w) M (q, w ), αν και μόνο αν w = σw, για κάποιο σ Σ

Διαδικασιακός Προγραμματισμός

Θέματα ΑΕΠΠ Πανελλήνιες Εξετάσεις 2008

Εισαγωγή στην Πληροφορική

Κεφ. 1: Εισαγωγή στην έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 11/10/07

Α2. Να γράψετε τους αριθμούς της Στήλης Α και δίπλα το γράμμα της Στήλης Β που αντιστοιχεί σωστά.

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00

ΕΚΦΩΝΗΣΕΙΣ. Α3. Δίνεται το παρακάτω τμήμα προγράμματος το οποίο περιέχει έξι αριθμημένα κενά:

Α Διαγώνισμα 1 ου Τριμήνου στο μάθημα της Πληροφορικής Γ Γυμνασίου Ονοματεπώνυμο:...

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2019 Β ΦΑΣΗ Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ

ΑΡΧΗ 2ΗΣ ΣΕΛΙΔΑΣ Γ Α... Β

Διαγώνισμα Γ Λυκείου. Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Η γλώσσα προγραμματισμού Strange

ΘΕΜΑ Α. Μονάδες 10 Α2.

Γ ΤΑΞΗ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΚΑΙ ΕΠΑΛ (ΟΜΑΔΑ Β

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην εξοικείωση με τη διαδικασία κατασκευής ενός Λεξικού Αναλυτή κάνοντας χρήση του lex.

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 18/12/12, 22:00

8. Λεξιλόγιο μιας γλώσσας είναι όλες οι ακολουθίες που δημιουργούνται από τα στοιχεία του αλφαβήτου της γλώσσας, τις λέξεις.

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

Κατανεμημένα Συστήματα

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση. Στη δήλωση ορισμό κανονικών εκφράσεων

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Τα Εργαστηριακά Προγράμματα. Η δομή Επιλογής στη PASCAL. H δομή Επανάληψης στη PASCAL. Η εντολή επανάληψης for

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές

Τύποι δεδομένων, τελεστές, μεταβλητές

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

Mεταβλητές (variables) και Σταθερές (constants)

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσμία: Τετάρτη 9/11/2016, 21:00

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Transcript:

29 ος ΠΑΝΕΛΛΗΝΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Θέμα 1 ο : Ακολουθίες DNA ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ [30 Μονάδες] Οι βιολόγοι συσχετίζουν ακολουθίες DNA για να βγάλουν συμπεράσματα για κοινά χαρακτηριστικά. Σε ένα εργαστήριο πιστεύουν ότι ακολουθίες DNA με τα παρακάτω χαρακτηριστικά αναφέρονται σε άτομα με κοινά χαρακτηριστικά προσώπου. Κάθε ακολουθία αποτελείται από Ν κεφαλαία γράμματα του λατινικού αλφάβητου. Τα στοιχεία των ακολουθιών είναι αριθμημένα από 1 έως και Ν. Λέμε ότι δυο ακολουθίες Α και Β σχετίζονται αν ισχύουν τα παρακάτω: υπάρχουν δυο ακέραιοι L και M (1 L M N) έτσι ώστε Πρόβλημα Α[i] = Β[i] για κάθε i < L Α[i] = Β[i] για κάθε i > M Α[i] = Β[M+L-i] για κάθε L i M Να αναπτύξετε ένα πρόγραμμα σε μια από τις γλώσσες της IOI (Pascal, C, C++, Java) το οποίο θα διαβάζει τα δεδομένα Ν, Α[i] και B[i] και θα βρίσκει αν αυτές οι ακολουθίες σχετίζονται ή όχι. Αρχεία εισόδου: Το αρχείο εισόδου με όνομα dnaseq.in είναι αρχείο κειμένου που περιέχει τρεις γραμμές. Η πρώτη γραμμή περιέχει έναν μόνο ακέραιο αριθμό N, το πλήθος των στοιχείων των ακολουθιών. Η δεύτερη γραμμή περιέχει τους Ν χαρακτήρες Α[i] (όπου 1 i N) της πρώτης ακολουθίας. Ομοίως, η τρίτη γραμμή περιέχει τους Ν χαρακτήρες Β[i] της δεύτερης ακολουθίας Αρχεία εξόδου: Το αρχείο εξόδου με όνομα dnaseq.out είναι αρχείο κειμένου αποτελούμενο από μία μόνο γραμμή. Αν οι ακολουθίες σχετίζονται, αυτή η γραμμή πρέπει να περιέχει μόνο έναν ακέραιο, την τιμή της διαφοράς M L. Αν υπάρχουν περισσότερες τιμές των L και M που επαληθεύουν τα παραπάνω, πρέπει να βρίσκετε την ελάχιστη δυνατή διαφορά M L. Αν οι ακολουθίες δεν σχετίζονται, η γραμμή της εξόδου θα πρέπει να περιέχει τη λέξη «no». Σελίδα 1 από 8

Παραδείγματα αρχείων εισόδου εξόδου 1 ο dnaseq.in dnaseq.out 12 BCBADABMAADA BCBAAAMBADDA 5 Εξήγηση: Οι τιμές L=5 και M=10 επαληθεύουν τα παραπάνω και δίνουν την ελάχιστη δυνατή τιμή της διαφοράς Μ L = 10 5 = 5. 2 ο dnaseq.in dnaseq.out 5 ABACΑ ABACA 0 Εξήγηση: Οι τιμές L=1 και M=1 (και εν γένει κάθε L=M) επαληθεύουν τα παραπάνω. 3 ο dnaseq.in dnaseq.out 7 ABABCAA DAABBBA no Περιορισμοί: Για περιπτώσεις ελέγχου συνολικής αξίας 50%, θα είναι: 1 Ν 10.000 Για περιπτώσεις ελέγχου συνολικής αξίας 100%, θα είναι: 1 Ν 1.000.000 Προσοχή! Φροντίστε να διαβάζετε και να επεξεργάζεστε τις ακολουθίες αποδοτικά, ειδικά αν προγραμματίζετε σε C++ ή Java. Μορφοποίηση: Στην έξοδο, όλες οι γραμμές τερματίζουν με ένα χαρακτήρα newline. Μέγιστος χρόνος εκτέλεσης: 1 sec. Μέγιστη διαθέσιμη μνήμη: 64 MB. Σελίδα 2 από 8

Θέμα 2 ο : Οδικό δίκτυο [35 Μονάδες] Μετά τον Β παγκόσμιο πόλεμο, οι περισσότεροι δρόμοι που συνέδεαν χωριά έχουν καταστραφεί. Η χώρα έχει Ν χωριά, αριθμημένα από 1 έως και Ν, και Μ βατούς δρόμους διπλής κατεύθυνσης που καθένας συνδέει δύο διαφορετικά χωριά. Δεν υπάρχουν περισσότεροι από ένας δρόμοι που να συνδέουν τα ίδια χωριά. Αυτοί οι δρόμοι δεν εξασφαλίζουν την δυνατότητα οδικής σύνδεσης δυο οποιωνδήποτε χωριών. Υπάρχουν ομάδες χωριών, που σε κάθε ομάδα δύο οποιαδήποτε χωριά συνδέονται οδικώς μεταξύ τους. Όμως, δεν υπάρχει οδική σύνδεση ανάμεσα σε χωριά που ανήκουν σε διαφορετικές ομάδες. Το κράτος σχεδιάζει την ανασυγκρότηση του οδικού δικτύου και έχει την δυνατότητα κατασκευής το πολύ Κ νέων δρόμων, καθένας από τους οποίους θα συνδέει δυο χωριά για τα οποία δεν υπάρχει οδική σύνδεση. Μετά την κατασκευή αυτών των νέων δρόμων, αν έχει γίνει σωστή σχεδίαση, το πλήθος των ομάδων χωριών θα μειωθεί γιατί περισσότερα χωριά θα συνδέονται οδικώς μεταξύ τους. Βρείτε ποιο είναι το ελάχιστο δυνατό πλήθος ομάδων που μπορεί να μείνει μετά την κατασκευή των νέων δρόμων. Πρόβλημα Να αναπτύξετε ένα πρόγραμμα σε μια από τις γλώσσες της IOI (Pascal, C, C++, Java) το οποίο θα διαβάζει τα δεδομένα και θα βρίσκει το ελάχιστο δυνατό πλήθος ομάδων χωριών που μένουν, μετά την κατασκευή των νέων δρόμων. Αρχεία εισόδου: Το αρχείο εισόδου με όνομα villages.in είναι αρχείο κειμένου. Η πρώτη γραμμή του περιέχει τρεις ακέραιους αριθμούς N, Μ, Κ, χωρισμένους ανά δύο με ένα κενό διάστημα: το πλήθος Ν των χωριών, το πλήθος Μ των υπαρχόντων δρόμων, και το πλήθος Κ των νέων δρόμων που πρόκειται να κατασκευαστούν. Κάθε μία από τις επόμενες Μ γραμμές περιέχει δύο ακέραιους αριθμούς A και B, χωρισμένους με ένα κενό διάστημα, όπου 1 Α, Β N και Α Β. Αυτό σημαίνει ότι υπάρχει ένας βατός δρόμος που συνδέει τα χωριά Α και Β. Αρχεία εξόδου: Το αρχείο εξόδου με όνομα villages.out είναι αρχείο κειμένου αποτελούμενο από μία μόνο γραμμή που θα περιέχει έναν μόνο Σελίδα 3 από 8

ακέραιο αριθμό: το ελάχιστο δυνατό πλήθος ομάδων που απομένουν, μετά την κατασκευή των νέων δρόμων. Παραδείγματα αρχείων εισόδου - εξόδου 1 ο villages.in villages.out 7 2 2 1 2 6 5 3 Εξήγηση: Αρχικά υπάρχουν πέντε ομάδες χωριών: {1, 2}, {3}, {4}, {5, 6} και {7}. Αν κατασκευαστούν δύο νέοι δρόμοι, π.χ. μεταξύ των χωριών (3, 7) και των χωριών (3, 4), τότε θα προκύψουν μόνο τρεις ομάδες: {1, 2}, {3, 4, 7} και {5, 6}. Αυτός είναι και ο ελάχιστος αριθμός ομάδων που μπορούν να προκύψουν μετά την κατασκευή δύο δρόμων. 2 ο 3 ο villages.in villages.out villages.in villages.out 4 2 3 1 2 4 3 1 4 3 0 3 2 1 4 1 3 Εξήγηση: Στο 2 ο παράδειγμα, αρκεί να κατασκευαστεί ένας νέος δρόμος για να μείνει μόνο μία ομάδα που να περιέχει όλα τα χωριά. Στο 3 ο παράδειγμα, υπάρχει εξ αρχής μόνο μία ομάδα χωριών και αυτή θα παραμείνει, παρόλο που το κράτος δεν μπορεί να κατασκευάσει κανέναν δρόμο (Κ=0). Περιορισμοί: Για περιπτώσεις ελέγχου συνολικής αξίας 50%, θα είναι: 1 Ν 10.000, 1 Μ 20.000, 0 Κ 10.000 Για περιπτώσεις ελέγχου συνολικής αξίας 100%, θα είναι: 1 Ν 1.000.000, 1 Μ 2.000.000, 0 Κ 1.000.000 Μορφοποίηση: Στην έξοδο, όλες οι γραμμές τερματίζουν με ένα χαρακτήρα newline. Μέγιστος χρόνος εκτέλεσης: 2 sec. Μέγιστη διαθέσιμη μνήμη: 128 MB. 1 Σελίδα 4 από 8

Θέμα 3 ο : Πάω διακοπές [35 Μονάδες] Η Κατερίνα δουλεύει πολύ και χρειάζεται επειγόντως διακοπές. Θέλει να φύγει ταξίδι στα νησιά και να έχει όσο γίνεται περισσότερες συνεχόμενες μέρες για να ξεκουραστεί, μπορεί όμως να κάνει μόνο ένα ταξίδι. Έστω ότι οι μέρες είναι αριθμημένες από 1 έως και Ν. Η Κατερίνα έχει στο πρόγραμμά της κάποιες υποχρεώσεις (συνολικά το πλήθος τους είναι Μ) τις οποίες έχει ήδη αναλάβει και που αντιστοιχούν σε κάποιες συγκεκριμένες μέρες: η i-οστή υποχρέωση είναι προγραμματισμένη για τη μέρα D i. Η Κατερίνα είναι διατεθειμένη να ακυρώσει το πολύ Κ από τις υποχρεώσεις της, προκειμένου να κάνει περισσότερες διακοπές. Βοηθήστε τη να βρει πόσες μέρες διακοπών μπορεί να κάνει. Πρόβλημα Να αναπτύξετε ένα πρόγραμμα σε μια από τις γλώσσες της IOI (Pascal, C, C++, Java) το οποίο θα διαβάζει τα δεδομένα και θα βρίσκει το μέγιστο πλήθος συνεχόμενων ημερών διακοπών που μπορεί να κάνει η Κατερίνα. Αρχεία εισόδου: Το αρχείο εισόδου με όνομα maketime.in είναι αρχείο κειμένου που η πρώτη γραμμή του περιέχει τρεις ακέραιους αριθμούς N, Μ και Κ, χωρισμένους ανά δύο με ένα κενό διάστημα: το συνολικό πλήθος N των ημερών, το πλήθος Μ των υποχρεώσεων που έχει προγραμματίσει η Κατερίνα, και το μέγιστο αριθμό Κ των υποχρεώσεων που είναι διατεθειμένη να ακυρώσει. Η δεύτερη γραμμή περιέχει ακριβώς Μ ακέραιους αριθμούς D i (όπου 1 i Μ και 1 D i Ν): τις ημέρες που είναι προγραμματισμένες οι Μ υποχρεώσεις της Κατερίνας. Αρχεία εξόδου: Το αρχείο εξόδου με όνομα maketime.out είναι αρχείο κειμένου αποτελούμενο από μία γραμμή που θα περιέχει έναν ακέραιο αριθμό: το μέγιστο πλήθος ημερών που η Κατερίνα μπορεί να κάνει διακοπές. Σελίδα 5 από 8

Παραδείγματα αρχείων εισόδου εξόδου 1 ο maketime.in maketime.out 10 5 2 6 9 3 2 7 5 Εξήγηση: Η Κατερίνα μπορεί να ακυρώσει τις υποχρεώσεις που έχει προγραμματίσει για τις μέρες 2 και 3. Έτσι, μπορεί να κάνει διακοπές από την 1 η μέρα έως και την 5 η, να έχει δηλαδή συνολικά 5 μέρες διακοπών. 2 ο 3 ο maketime.in maketime.out maketime.in maketime.out 12 4 1 4 10 4 8 5 7 2 0 3 4 Εξήγηση: Στο 2 ο παράδειγμα, η Κατερίνα μπορεί να ακυρώσει την υποχρέωση της μέρας 8 και να κάνει 5 μέρες διακοπών (από την 5 η μέρα έως και την 9 η ). Προσέξτε ότι έχει προγραμματίσει δύο υποχρεώσεις για την 4 η μέρα και δεν είναι διατεθειμένη να τις ακυρώσει και τις δύο (Κ=1). Στο 3 ο παράδειγμα, η Κατερίνα δεν είναι διατεθειμένη να ακυρώσει καμία υποχρέωση και μπορεί να κάνει 3 μέρες διακοπών, από την 5 η μέρα έως και την 7 η. Περιορισμοί: Για περιπτώσεις ελέγχου συνολικής αξίας 20%, θα είναι: 1 Ν 100, 1 Μ 100, 0 Κ Μ Για περιπτώσεις ελέγχου συνολικής αξίας 50%, θα είναι: 1 Ν 10.000, 1 Μ 20.000, 0 Κ Μ Για περιπτώσεις ελέγχου συνολικής αξίας 100%, θα είναι: 1 Ν 1.000.000, 1 Μ 2.000.000, 0 Κ Μ 3 Μορφοποίηση: Στην έξοδο, όλες οι γραμμές τερματίζουν με ένα χαρακτήρα newline. Μέγιστος χρόνος εκτέλεσης: 1 sec. Μέγιστη διαθέσιμη μνήμη: 64 MB. Σελίδα 6 από 8

ΝΑ ΑΠΑΝΤΗΣΕΤΕ ΚΑΙ ΣΤΑ ΤΡΙΑ ΘΕΜΑΤΑ ΔΙΑΡΚΕΙΑ ΕΞΕΤΑΣΗΣ ΤΕΣΣΕΡΙΣ (4) ΩΡΕΣ ΚΑΛΗ ΣΑΣ ΕΠΙΤΥΧΙΑ Ακολουθούν χρήσιμες οδηγίες! Διαβάστε τις ακόλουθες παρατηρήσεις προσεκτικά! Ερωτήσεις που αφορούν τις παρατηρήσεις αυτές δεν θα απαντηθούν. Η πιστή τήρηση των αναφερόμενων οδηγιών είναι απαραίτητη. Οι αναφερόμενοι σε κάθε θέμα χρόνοι είναι ενδεικτικοί. Η επιτροπή μπορεί να τους αυξομειώσει προκειμένου να επιτύχει καλύτερη κλιμάκωση της βαθμολογίας. 1. Στην αρχή του πηγαίου κώδικά σας, θα πρέπει να χρησιμοποιήσετε τις επικεφαλίδες, ανάλογα με το πρόβλημα πχ.: /* USER: username LANG: C TASK: maketime */ για κώδικα σε C /* USER: username LANG: C++ TASK: maketime */ για κώδικα σε C++ (* USER: username LANG: PASCAL TASK: maketime *) για κώδικα σε PASCAL /* USER: username LANG: Java TASK: maketime */ για κώδικα σε Java 2. Έλεγχος τιμών δεν απαιτείται. Οι τιμές των αρχείων ελέγχου είναι πάντα έγκυρες. Σελίδα 7 από 8

3. Το σύστημα αξιολόγησης «τρέχει» σε Linux. Σας προτείνουμε να δοκιμάζετε τις λύσεις σας στο σύστημα. Έχετε δικαίωμα πολλαπλών υποβολών μέχρι το τέλος του διαγωνισμού. Μετά από κάθε υποβολή θα λαμβάνετε την αξιολόγηση της λύσης σας, σε τμήμα των Αρχείων Ελέγχου. 4. Οι επιλογές του μεταγλωττιστή που χρησιμοποιούνται για τη βαθμολόγηση είναι οι εξής: C: gcc -std=c99 -O2 -DCONTEST -s -static -lm C++: g++ -O2 -DCONTEST -s -static -lm Free Pascal: fpc -O2 -dcontest XS Java: javac 5. Το Linux ξεχωρίζει μεταξύ κεφαλαίων και πεζών γραμμάτων. Ελέγξτε ότι τα ονόματα των αρχείων εισόδου και εξόδου είναι γραμμένα με μικρά (πεζά) γράμματα. 6. Τα προγράμματά σας πρέπει να επιστρέφουν ως κωδικό εξόδου το μηδέν. 7. Για προγραμματισμό σε C και C++ η συνάρτηση main() πρέπει πάντα να τερματίζει με τις εντολές "return(0);" ή "exit(0);". 8. Οι προγραμματιστές σε Pascal πρέπει να χρησιμοποιούν την εντολή "halt" μόνο με κωδικό εξόδου το μηδέν (μόνο δηλαδή με την μορφή "halt;" ή "halt(0);"). 9. Το πρόγραμμα αξιολόγησης θα εξετάσει την τιμή που επιστρέφει το πρόγραμμά σας. Εάν η τιμή αυτή δεν είναι μηδέν, τότε το πρόγραμμα δεν θα βαθμολογηθεί για το συγκεκριμένο test. 10. Κανένας άλλος χαρακτήρας εκτός του χαρακτήρα νέας γραμμής (newline) (χαρακτήρας 0A στο ASCII εκφρασμένο στο δεκαεξαδικό σύστημα αρίθμησης, \n για προγραμματιστές C, C++ ή Java, $0A για προγραμματιστές Pascal) δεν θα υπάρχει μετά τον τελευταίο αριθμό κάθε γραμμής των αρχείων εισόδου και εξόδου. Δηλαδή, κάθε γραμμή των αρχείων εισόδου και εξόδου, συμπεριλαμβανομένης και της τελευταίας, τερματίζεται με τον χαρακτήρα νέας γραμμής όπως ορίστηκε παραπάνω. 11. Για προγραμματισμό σε Java, το αρχείο πηγαίου κώδικα πρέπει να περιέχει μόνο μία public class, με όνομα το ίδιο με το κωδικό όνομα του προβλήματος (με πεζά γράμματα, π.χ. starwars). Το αρχείο πρέπει να ονομάζεται με το ίδιο όνομα της κλάσης και κατάληξη.java. Αν χρειαστεί να ορίσετε επιπλέον κλάσεις, θα πρέπει να φροντίσετε να μην είναι public. Κάθε απόπειρα κακόβουλης εισόδου ή ακόμα και εξερεύνησης του συστήματος, εκτός της παρεχόμενης διεπαφής, θα εντοπίζεται και θα επιβάλλονται κυρώσεις. Με τη συνεργασία: Αριστοτελείου Πανεπιστημίου Θεσσαλονίκης, Εθνικού και Καποδιστριακού Πανεπιστημίου Αθηνών, Εθνικού Μετσόβιου Πολυτεχνείου, Πανεπιστημίου Αιγαίου, Πανεπιστημίου Ιωαννίνων, Πανεπιστημίου Πατρών, Πανεπιστημίου Πειραιώς, ΤΕΙ Αθήνας. Σελίδα 8 από 8