#include <iostream> 
#include <fstream>

int EnterOption() {
    std::cout << "Choose 2 options:\n";
    std::cout << "1. Save an array to binary file\n";
    std::cout << "2. Load the array from binary file\n";
    std::cout << "Enter option index: ";
    int option;
    std::cin >> option;
    return option;
}

void saveArrayToBinFile() {
    int n;
    std::cout << "Enter n: ";
    std::cin >> n;
    int* arr = new int[n]();
    std::cout << "Enter an array: ";
    for (int i = 0; i < n; ++i) {
        std::cin >> arr[i];
    }

    std::ofstream fout("input.bin", std::ios::binary);
    fout.write((char*)&n, sizeof(int));
    fout.write((char*)arr, sizeof(int)*n);
    fout.close();
}

int loadArrayFromBinFileAndFindMedian() {
    std::ifstream fin("input.bin", std::ios::binary);
    int n;
    fin.read((char*)&n, sizeof(int));
    int* arr = new int[n]();
    fin.read((char*)arr, sizeof(int)*n);

    for (int i = 0; i < n; ++i) {
        for (int j = i+1; j < n; ++j) {
            if (arr[i] > arr[j]) {
                std::swap(arr[i], arr[j]);
            }
        }
    }

    return arr[(n-1)/2];
}

int main() {
    int option;
    int failFlag = false;
    do {
        option = EnterOption();
        if (option == 1) {
            saveArrayToBinFile();
        } else if (option == 2) {
            int med = loadArrayFromBinFileAndFindMedian();
            std::cout << "The median of the array is: ";
            std::cout << med << '\n';
        } else {
            std::cout << "Invalid Option!!\n";
            failFlag = true;
        }
    } while (failFlag);
    return 0;
}