COCI-23 (2023) - Γύρος #5 - 2 (Bitovi)

View as PDF

Submit solution

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

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

coci23e2-figure.svg

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

Σας δίνονται δύο σύνολα αριθμών A και B μεγέθους N. Σε μία κίνηση, μπορείτε να επιλέξετε ένα αυθαίρετο στοιχείο από το σύνολο A και να αλλάξετε ένα αυθαίρετο ψηφίο (bit) στη δυαδική του αναπαράσταση. Ο αριθμός που προκύπτει δεν πρέπει να ανήκει στο σύνολο A αμέσως πριν την αλλαγή.

Για παράδειγμα, ο αριθμός 5 στο δυαδικό σύστημα είναι 0101_2. Σε μία κίνηση, μπορεί να γίνει 13 = 1101_2, 1 = 0001_2, 7 = 0111_2, ή 4 = 0100_2 αν αλλάξουμε το 4ο, 3ο, 2ο, ή 1ο ψηφίο του, αντίστοιχα. Καθορίστε μια ακολουθία κινήσεων με την οποία το σύνολο A γίνεται ίσο με το σύνολο B. Τα σύνολα είναι ίσα αν έχουν τον ίδιο αριθμό στοιχείων και δεν υπάρχει στοιχείο στο σύνολο A που δεν ανήκει στο σύνολο B.

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

Είσοδος

Η πρώτη γραμμή θα περιέχει τον ακέραιο N\;(1 \le N \le 2^{15}), το μέγεθος των συνόλων A και B. Η δεύτερη γραμμή θα περιέχει N διαφορετικούς ακέραιους a_i\;(0 \le a_i < 2^{15}), τα στοιχεία του συνόλου A. Η τρίτη γραμμή θα περιέχει N διαφορετικούς ακέραιους b_i\;(0 \le b_i < 2^{15}), τα στοιχεία του συνόλου B.

Έξοδος

Στην πρώτη γραμμή, εκτυπώστε τον αριθμό των απαιτούμενων κινήσεων.

Στις υπόλοιπες γραμμές, εκτυπώστε τους αριθμούς x και y (0 \le x, y < 2^{15}) - αλλάζουμε τον αριθμό x από το σύνολο A στον αριθμό y. Οι αριθμοί x και y πρέπει να διαφέρουν ακριβώς σε ένα bit, και πρέπει να ισχύει ότι x \in A και y \notin A τη στιγμή που εκτελούμε την κίνηση.

Βαθμολογία
 Υποπρόβλημα    Βαθμοί   Περιορισμοί
1 10 a_i,\;b_i \le 2^{14}
2 15 N \le 7
3 30 N \le 2^7
4 15 Κανένας επιπλέον περιορισμός.
Παραδείγματα

input

3
0 1 2
1 2 3

output

2
1 3
0 1

Επεξήγηση του πρώτου παραδείγματος: Εάν πρώτα κάνουμε την κίνηση 0 1 και στη συνέχεια την 1 3, μεταξύ αυτών των δύο κινήσεων, το σύνολο A θα είχε δύο ίδια στοιχεία, το οποίο δεν επιτρέπεται από την εκφώνηση του προβλήματος. Μια άλλη δυνατή λύση είναι η 2 3, 0 2.


input

3
4 8 31
0 4 8

output

5
31 30
30 28
28 24
24 16
16 0

Επεξήγηση του δεύτερου παραδείγματος: Το 31 = 11111^2. Αφαιρώντας bits από το λιγότερο σημαντικό προς το πιο σημαντικό, λαμβάνουμε τους αριθμούς 30, 28, 24, 16, και 0 σε ακολουθία. Μετά από όλες τις κινήσεις, το σύνολο A γίνεται ίσο με το σύνολο B.


input

5
0 1 2 4 5
7 6 5 3 2

output

9
1 3
3 7
0 1
1 0
2 6
0 2
7 3
5 7
4 5

Comments

There are no comments at the moment.