Загрузка данных


#include <iostream>
#include <set>
#include <vector>
using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    
    int n, m;
    cin >> n >> m;
    
    set<int> anya, borya;
    
    // Читаем цвета Ани (set автоматически удалит дубликаты и отсортирует)
    for (int i = 0; i < n; i++) {
        int color;
        cin >> color;
        anya.insert(color);
    }
    
    // Читаем цвета Бори
    for (int i = 0; i < m; i++) {
        int color;
        cin >> color;
        borya.insert(color);
    }
    
    // 1. Пересечение (цвета в обоих наборах)
    vector<int> intersection;
    for (int color : anya) {
        if (borya.count(color)) {  // Проверка наличия в set Бори
            intersection.push_back(color);
        }
    }
    
    // 2. Только у Ани (разность множеств A - B)
    vector<int> only_anya;
    for (int color : anya) {
        if (!borya.count(color)) {
            only_anya.push_back(color);
        }
    }
    
    // 3. Только у Бори (разность множеств B - A)
    vector<int> only_borya;
    for (int color : borya) {
        if (!anya.count(color)) {
            only_borya.push_back(color);
        }
    }
    
    // Вывод результата
    // Пересечение
    cout << intersection.size() << "\n";
    for (int color : intersection) {
        cout << color << " ";
    }
    cout << "\n";
    
    // Только у Ани
    cout << only_anya.size() << "\n";
    for (int color : only_anya) {
        cout << color << " ";
    }
    cout << "\n";
    
    // Только у Бори
    cout << only_borya.size() << "\n";
    for (int color : only_borya) {
        cout << color << " ";
    }
    cout << "\n";
    
    return 0;
}