COI-08 (2008) - 1 (Glasnici)

View as PDF

Submit solution

Points: 100 (partial)
Time limit: 1.0s
Memory limit: 64M

Author:
Problem type
Allowed languages
C, C++, Java, Pascal, Python
Glasnici

Ένας μακρύς ευθύς δρόμος συνδέει δύο χωριά. Κατά μήκος του δρόμου, σταθμεύουν \(Ν\) αγγελιοφόροι και, όταν χρειάζεται, ανταλλάσσουν μηνύματα χρησιμοποιώντας κυρίως τα πόδια τους, αλλά και τις φωνητικές χορδές και τα αυτιά τους.

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

Το τρέξιμο και οι φωνές εξελίσονται ως εξής:

  • Καθένας από τους αγγελιοφόρους μπορεί να τρέχει οποτεδήποτε, προς οποιαδήποτε κατεύθυνση, με ταχύτητα το πολύ 1 μονάδας ανά δευτερόλεπτο, ή μπορεί να αποφασίσει να μην τρέξει καθόλου και να μείνει ακίνητος.
  • Όλοι οι αγγελιοφόροι που γνωρίζουν τις ειδήσεις τις φωνάζουν ανά πάσα στιγμή. Ένας αγγελιοφόρος μπορεί να ακούσει έναν άλλο αγγελιοφόρος που φωνάζει (και να μάθει τα νέα) αν η απόσταση μεταξύ τους είναι το πολύ \mathbf{K} μονάδες.

Γράψτε ένα πρόγραμμα που, λαμβάνοντας υπόψη τις αρχικές τοποθεσίες των αγγελιοφόρων, καθορίζει τη μικρότερη χρονική διάρκεια (σε δευτερόλεπτα) που απαιτείται για να μάθουν τα νέα όλοι οι αγγελιοφόροι. Η τοποθεσία κάθε αγγελιοφόρου δίνεται με θετικό πραγματικό αριθμό – η απόσταση από το πρώτο χωριό. Όπως προαναφέρθηκε, αρχικά μόνο ο πρώτος αγγελιοφόρος γνωρίζει τα νέα.

Είσοδος

Η πρώτη γραμμή περιέχει τον πραγματικό αριθμό K (0 \le K \le 10^6), τη μέγιστη απόσταση στην οποία δύο αγγελιοφόροι μπορούν να ακούσουν ο ένας τον άλλον.
Η δεύτερη γραμμή περιέχει τον ακέραιο αριθμό N (1 \le N \le 100\,000), τον αριθμό των αγγελιοφόρων.
Κάθε μία από τις ακόλουθες N γραμμές περιέχει έναν πραγματικό αριθμό D (0 \le D \le 10^9), την απόσταση ενός αγγελιοφόρου από το πρώτο χωριό. Οι αποστάσεις θα ταξινομηθούν με αύξουσα σειρά. Είναι δυνατό για πολλούς αγγελιοφόρους να βρίσκονται στην ίδια τοποθεσία.

Έξοδος

Τυπώστε έναν πραγματικό αριθμό, τον ελάχιστο χρόνο που χρειάζεται για να μάθουν όλοι οι αγγελιοφόροι τα νέα. Η έξοδός σας θα γίνει αποδεκτή εάν διαφέρει από την επίσημη έξοδο το πολύ κατά \pm 0,001.

Παραδείγματα

input

3.000
2
0.000
6.000

output

1.500

input

2.000
4
0.000
4.000
4.000
8.000

output

1.000

Comments

There are no comments at the moment.