171692025-05-28 08:58:35AblablablaSzimmetrikus sorozatcpp17Accepted 100/100287ms22440 KiB
#include <bits/stdc++.h>

using namespace std;

typedef pair<int, int> pii;

vector<vector<int>> csucsok;
vector<bool> bejart;
vector<pii> valasz;

int dfs(int akt){
    bejart[akt] = 1;
    int vissza = 1;

    for(int x : csucsok[akt]){
        if(bejart[x]) continue;

        valasz.push_back({x, akt});
        vissza += dfs(x);
    }

    return vissza;
}

int main()
{
    int n;
    cin >> n;

    vector<int> alap(n), mas(n);
    for(int i = 0; i < n; i++){
        cin >> alap[i];
        mas[i] = alap[i];
    }

    sort(mas.begin(), mas.end());
    mas.erase(unique(mas.begin(), mas.end()), mas.end());

    map<int, int> index;
    vector<int> vissza(mas.size());
    for(int i = 0; i < mas.size(); i++){
        index[mas[i]] = i;
        vissza[i] = mas[i];
    }

    for(int &x : alap){
        x = index[x];
    }

    csucsok.assign(mas.size(), vector<int>());
    for(int i = 0; i < n / 2 + (n%2); i++){
        int kovi = n - i - 1;

        if(alap[i] != alap[kovi]){
            csucsok[alap[i]].push_back(alap[kovi]);
            csucsok[alap[kovi]].push_back(alap[i]);
        }
    }

    bejart.assign(mas.size(), 0);
    int ans = 0;
    for(int i = 0; i < mas.size(); i++){
        if(!bejart[i]){
            int a = dfs(i);
            ans += a - 1;
        }
    }

    cout << ans << "\n";
    reverse(valasz.begin(), valasz.end());
    for(auto x : valasz){
        cout << vissza[x.first] << " " << vissza[x.second] << "\n";
    }
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
2Accepted108ms8108 KiB
subtask29/9
3Accepted2ms316 KiB
4Accepted1ms328 KiB
5Accepted2ms316 KiB
6Accepted2ms508 KiB
7Accepted1ms316 KiB
subtask314/14
8Accepted1ms316 KiB
9Accepted1ms316 KiB
10Accepted1ms500 KiB
11Accepted1ms316 KiB
12Accepted1ms316 KiB
13Accepted1ms316 KiB
subtask425/25
14Accepted1ms316 KiB
15Accepted2ms316 KiB
16Accepted3ms564 KiB
17Accepted4ms564 KiB
18Accepted3ms564 KiB
19Accepted3ms316 KiB
20Accepted3ms316 KiB
21Accepted3ms316 KiB
subtask522/22
22Accepted170ms13624 KiB
23Accepted197ms22440 KiB
24Accepted197ms22440 KiB
25Accepted172ms13620 KiB
26Accepted172ms13620 KiB
27Accepted195ms21416 KiB
28Accepted190ms21412 KiB
29Accepted174ms13636 KiB
30Accepted167ms13484 KiB
31Accepted188ms22184 KiB
32Accepted194ms22184 KiB
33Accepted175ms13484 KiB
34Accepted165ms13488 KiB
35Accepted186ms17460 KiB
36Accepted193ms19880 KiB
37Accepted175ms13492 KiB
subtask630/30
38Accepted1ms316 KiB
39Accepted108ms8108 KiB
40Accepted2ms316 KiB
41Accepted1ms328 KiB
42Accepted2ms316 KiB
43Accepted2ms508 KiB
44Accepted1ms316 KiB
45Accepted1ms316 KiB
46Accepted1ms316 KiB
47Accepted1ms500 KiB
48Accepted1ms316 KiB
49Accepted1ms316 KiB
50Accepted1ms316 KiB
51Accepted1ms316 KiB
52Accepted2ms316 KiB
53Accepted3ms564 KiB
54Accepted4ms564 KiB
55Accepted3ms564 KiB
56Accepted3ms316 KiB
57Accepted3ms316 KiB
58Accepted3ms316 KiB
59Accepted170ms13624 KiB
60Accepted197ms22440 KiB
61Accepted197ms22440 KiB
62Accepted172ms13620 KiB
63Accepted172ms13620 KiB
64Accepted195ms21416 KiB
65Accepted190ms21412 KiB
66Accepted174ms13636 KiB
67Accepted167ms13484 KiB
68Accepted188ms22184 KiB
69Accepted194ms22184 KiB
70Accepted175ms13484 KiB
71Accepted165ms13488 KiB
72Accepted186ms17460 KiB
73Accepted193ms19880 KiB
74Accepted175ms13492 KiB
75Accepted268ms17576 KiB
76Accepted192ms10560 KiB
77Accepted101ms4272 KiB
78Accepted194ms10548 KiB
79Accepted146ms5552 KiB
80Accepted199ms9012 KiB
81Accepted190ms8896 KiB
82Accepted193ms9016 KiB
83Accepted287ms18088 KiB
84Accepted122ms4540 KiB
85Accepted166ms5808 KiB
86Accepted215ms9268 KiB
87Accepted217ms9268 KiB
88Accepted215ms9268 KiB
89Accepted216ms9268 KiB