IOI-22 (2022) - Εξάσκηση - 3 (team)

View as PDF

Submit solution

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

Problem type
Allowed languages
C, C++, Java, Pascal, Python

Ομαδικός Διαγωνισμός

Είστε προπονητής προγραμματισμού σε ένα πανεπιστήμιο. Το πανεπιστήμιό σας, εγγράφει πολλές ομάδες για συμμετοχή σε διαγωνισμό προγραμματισμού. Στον διαγωνισμό προγραμματισμού συμμετέχουν ομάδες τριών ατόμων.

Στο πανεπιστήμιό σας, υπάρχουν N κατάλληλοι προγραμματιστές, αριθμημένοι από 0 έως N - 1. Για κάθε i τέτοιο ώστε 0 \le i \le N - 1, ο προγραμματιστής i έχει επίπεδο δεξιοτήτων L[i]. Το επίπεδο δεξιοτήτων μιας ομάδας που αποτελείται από προγραμματιστής i, j και k είναι min(L[i], L[j], L[k]) + max(L[i], L[j], L[k]).

Θέλετε να εγγράωετε μόνο ομάδες με επίπεδο δεξιοτήτων αυστηρά μεγαλύτερο από K. Κάθε προγραμματιστής μπορεί να ανατεθεί μόνο σε μία το πολύ εγγεγραμμένη ομάδα. Θέλετε να μάθετε τον μέγιστο αριθμό ομάδων που μπορείτε να εγγράψετε.

Λεπτομέρειες Υλοποίησης

Θα πρέπει να εφαρμόσετε την παρακάτω διαδικασία:

int maximum_teams(int N, int K, int[] L);
  • N : ο αριθμός των προγραμματιστών.
  • K : το όριο επιπέδου δεξιοτήτων των εγγεγραμμένων ομάδων.
  • L : ένας πίνακας μήκους N που περιγράφει το επίπεδο δεξιοτήτων των προγραμματιστών.
  • Αυτή η διαδικασία θα πρέπει να επιστρέψει τον μέγιστο αριθμό ομάδων που μπορείτε να εγγράψετε.
  • Αυτή η διαδικασία καλείται ακριβώς μία φορά.

Παράδειγμα

Παράδειγμα 1

Εξετάστε την ακόλουθη κλήση:

maximum_teams(8, 6, [5, 4, 6, 2, 3, 2, 1, 1])

Μπορείτε να εγγράψετε μια ομάδα με τους προγραμματιστές 0, 3 και 5 (με επίπεδα δεξιοτήτων 5, 2, 2 αντίστοιχα) και μία ομάδα με τους προγραμματιστές 1, 2 και 4 (με επίπεδα δεξιοτήτων 4, 6, 3 αντίστοιχα). Δεν υπάρχει τρόπος εγγραφής περισσότερων από δύο ομάδων. Επομένως, η διαδικασία maximum_teams θα πρέπει να επιστρέψει 2.

Περιορισμοί

  • 1 \le N \le 100\, 000
  • 1 \le K \le 108
  • 1 \le L[i] \le 108 (για κάθε i τέτοιο ώστε 0 \le i \le N - 1)

Υποπροβλήματα

  1. (6 βαθμοί) N \le 3
  2. (12 βαθμοί) N \le 8
  3. (37 βαθμοί) N \le 1000
  4. (45 βαθμοί) Χωρίς πρόσθετους περιορισμούς.

Υπόδειγμα βαθμολογητή

Ο βαθμολογητής δείγματος διαβάζει την είσοδο στην ακόλουθη μορφή:

  • γραμμή 1: N K
  • γραμμή 2: L[0] L[1] \ldots L[N - 1]

Το δείγμα βαθμολογητή εκτυπώνει την απάντησή σας στην ακόλουθη μορφή:

  • γραμμή 1: η επιστρεφόμενη τιμή του maximum_teams

Comments

There are no comments at the moment.