Διακεκομμένη γραμμή
Το Αζερμπαϊτζάν είναι διάσημο για τα χαλιά του. Είστε ένας διάσημος σχεδιαστής
χαλιών και θέλετε να σχεδιάσετε μια νέα δημιουργία χρησιμοποιώντας μια
διακεκομμένη γραμμή. Μια διακεκομμένη γραμμή είναι μια ακολουθία από
ευθύγραμμα τμήματα στο διδιάστατο επίπεδο, η οποία ορίζεται από μια ακολουθία
σημείων
, ως εξής. Για κάθε
υπάρχει ένα ευθύγραμμο τμήμα που ενώνει τα σημεία
και
.
Για να μπορέσετε να σχεδιάσετε τη νέα δημιουργία, έχετε ήδη επιλέξει σημεία στο
διδιάστατο επίπεδο. Οι συντεταγμένες του σημείου
(
) είναι (
). Δύο σημεία δεν μπορούν να έχουν την ίδια συνταταγμένη x ούτε την ίδια
συντεταγμένη y.
Θέλετε να βρείτε μια ακολουθία σημείων (), (
), ..., (
) που να ορίζει μια διακεκομμένη γραμμή η οποία να:
- ξεκινά από το (
), δηλαδή
και
,
- περιλαμβάνει όλα τα σημεία (όχι απαραιτήτως ως άκρα των ευθυγράμμων τμημάτων της), και
- αποτελείται αποκλειστικά από οριζόντια και κατακόρυφα τμήματα (δύο
διαδοχικά σημεία που ορίζουν τη διακεκομμένη γραμμή πρέπει να έχουν ίδια τη
συντεταγμένη
ή την
).
Η διακεκομμένη γραμμή επιτρέπεται να τέμνει ή να επικαλύπτει τον εαυτό της με οποιονδήποτε τρόπο. Πιο τυπικά, κάθε σημείο του επιπέδου μπορεί να ανήκει σε οσαδήποτε τμήματα της διακεκομμένης γραμμής.
Αυτό το πρόβλημα είναι output-only με μερική βαθμολογία (partial scoring). Θα σας
δοθούν αρχεία εισόδου (input files) που θα καθορίζουν τις θέσεις των σημείων. Για
κάθε αρχείο εισόδου πρέπει να υποβάλετε ένα αρχείο εξόδου (output file), το οποίο να
περιγράφει τη διακεκομμένη γραμμή με τις απαιτούμενες ιδιότητες. Για κάθε αρχείο
εξόδου που περιγράφει μια έγκυρη διακεκομμένη γραμμή, η βαθμολογία σας θα
εξαρτάται από το πλήθος των τμημάτων της διακεκομμένης γραμμής (δείτε τη
Βαθμολογία παρακάτω).
Δεν πρέπει να υποβάλετε κώδικα για αυτό το πρόβλημα.
Δεδομένα εισόδου
Κάθε αρχείο εισόδου θα έχει την εξής μορφή:
- γραμμή
:
- γραμμή
(για
):
Δεδομένα εξόδου
Κάθε αρχείο εξόδου πρέπει να έχει την εξής μορφή:
- γραμμή
:
- γραμμή
(για
):
Να σημειωθεί ότι η δεύτερη γραμμή πρέπει να περιέχει τα και
(δηλαδή, το
αρχείο δεν πρέπει να περιέχει τα
και
). Οι συντεταγμένες
και
πρέπει να είναι ακέραιοι αριθμοί.
Παράδειγμα
Για το αρχείο εισόδου:
4
2 1
3 3
4 4
5 2
ένα πιθανό έγκυρο αρχείο εξόδου είναι:
6
2 0
2 3
5 3
5 2
4 2
4 4
Να σημειωθεί ότι αυτό το παράδειγμα δεν συμπεριλαμβάνεται ανάμεσα στα πραγματικά αρχεία εισόδου του συγκεκριμένου προβλήματος.
Περιορισμοί
- Όλες οι τιμές των
και
είναι ακέραιες.
- Δύο σημεία δεν μπορούν να έχουν την ίδια συντεταγμένη
ή την ίδια συντεταγμένη
, δηλαδή,
και
για
.
- Το μέγεθος του υποβληθέντος αρχείου (είτε κειμένου είτε συμπιεσμένου) δεν μπορεί να υπερβαίνει τα 15MB.
Βαθμολογία
Κάθε test case βαθμολογείται το πολύ με βαθμούς. Το αρχείο εξόδου για κάποιο test
case θα πάρει
βαθμούς αν δεν ορίζει μια διακεκομμένη γραμμή με τις απαιτούμενες
ιδιότητες. Σε διαφορετική περίπτωση, η βαθμολογία θα καθορίζεται χρησιμοποιώντας
μια μειούμενη ακολουθία
, η οποία διαφέρει για κάθε test case.
Έστω ότι η λύση σας περιλαμβάνει μια έγκυρη διακεκομμένη γραμμή, η οποία
αποτελείται από τμήματα. Τότε θα βαθμολογηθείτε με:
βαθμούς, αν
(για
),
βαθμούς, αν
(για
),
βαθμούς, αν
,
βαθμούς, αν
.
Η ακολουθία για κάθε test case δίνεται παρακάτω.
Test case | |
|
|
|
|
|
|
Πρόγραμμα απεικόνισης (visualizer)
Στο συμπιεσμένο πακέτο αυτού του προβλήματος υπάρχει ένα πρόγραμμα (script) που σας επιτρέπει να απεικονίσετε τα αρχεία εισόδου και εξόδου.
Για να απεικονίσετε ένα αρχείο εισόδου, χρησιμοποιήστε την ακόλουθη εντολή:
python vis.py [input file]
Μπορείτε επίσης να απεικονίσετε τη λύση σας για κάποιο αρχείο εισόδου, χρησιμοποιώντας την ακόλουθη εντολή. Λόγω τεχνικών περιορισμών, το πρόγραμμα απεικόνισης θα εμφανίζει μόνο τα πρώτα τμήματα του αρχείου εξόδου.
python vis.py [input file] --solution [output file]
Παράδειγμα:
python vis.py examples/00.in --solution examples/00.out
Comments