108012024-04-14 11:48:15AblablablaSzimmetrikus sorozatcpp17Accepted 100/100649ms66356 KiB
#include <bits/stdc++.h>

using namespace std;

typedef pair<int, int> pii;

map<int, vector<int>> csucsok;
map<int, bool> bejart;
map<int, bool> bejart2;
vector<pii> ans;
vector<int> alap;

int legK(int akt){
    bejart[akt] = 1;
    int mini = akt;

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

        mini = min(mini, legK(x));
    }

    return mini;
}

void dfs(int akt, int mini){
    bejart2[akt] = 1;
    if(akt != mini){
        ans.push_back({akt, mini});
    }

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

        dfs(x, mini);
    }
}

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

    alap.assign(n, 0);
    for(int &x : alap){
        cin >> x;
        x--;
    }

    for(int i = 0; i < n / 2 + (n % 2); i++){
        if(alap[i] != alap[n - 1 - i]){
            csucsok[alap[i]].push_back(alap[n - 1 - i]);
            csucsok[alap[n - 1 - i]].push_back(alap[i]);
        }
    }

    for(auto &x : csucsok){
        if(bejart[x.first]) continue;

        int a = legK(x.first);
        dfs(x.first, a);
    }

    cout << ans.size() << "\n";
    for(pii x : ans){
        cout << x.first + 1 << " " << x.second + 1 << "\n";
    }
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms1748 KiB
2Accepted212ms24704 KiB
subtask29/9
3Accepted3ms2252 KiB
4Accepted3ms2352 KiB
5Accepted3ms2568 KiB
6Accepted3ms2784 KiB
7Accepted3ms2868 KiB
subtask314/14
8Accepted3ms2920 KiB
9Accepted3ms2920 KiB
10Accepted3ms2916 KiB
11Accepted3ms3044 KiB
12Accepted3ms3052 KiB
13Accepted3ms3300 KiB
subtask425/25
14Accepted3ms3528 KiB
15Accepted4ms3796 KiB
16Accepted6ms4128 KiB
17Accepted7ms4292 KiB
18Accepted6ms4028 KiB
19Accepted6ms3828 KiB
20Accepted6ms4080 KiB
21Accepted4ms3796 KiB
subtask522/22
22Accepted352ms46540 KiB
23Accepted337ms66104 KiB
24Accepted328ms66356 KiB
25Accepted337ms46796 KiB
26Accepted301ms46768 KiB
27Accepted286ms64204 KiB
28Accepted293ms64104 KiB
29Accepted305ms46680 KiB
30Accepted275ms46668 KiB
31Accepted275ms65560 KiB
32Accepted272ms65636 KiB
33Accepted264ms46668 KiB
34Accepted284ms46780 KiB
35Accepted287ms54624 KiB
36Accepted296ms60660 KiB
37Accepted268ms46780 KiB
subtask630/30
38Accepted3ms4060 KiB
39Accepted209ms26896 KiB
40Accepted3ms2252 KiB
41Accepted3ms2352 KiB
42Accepted3ms2568 KiB
43Accepted3ms2784 KiB
44Accepted3ms2868 KiB
45Accepted3ms2920 KiB
46Accepted3ms2920 KiB
47Accepted3ms2916 KiB
48Accepted3ms3044 KiB
49Accepted3ms3052 KiB
50Accepted3ms3300 KiB
51Accepted3ms3528 KiB
52Accepted4ms3796 KiB
53Accepted6ms4128 KiB
54Accepted7ms4292 KiB
55Accepted6ms4028 KiB
56Accepted6ms3828 KiB
57Accepted6ms4080 KiB
58Accepted4ms3796 KiB
59Accepted352ms46540 KiB
60Accepted337ms66104 KiB
61Accepted328ms66356 KiB
62Accepted337ms46796 KiB
63Accepted301ms46768 KiB
64Accepted286ms64204 KiB
65Accepted293ms64104 KiB
66Accepted305ms46680 KiB
67Accepted275ms46668 KiB
68Accepted275ms65560 KiB
69Accepted272ms65636 KiB
70Accepted264ms46668 KiB
71Accepted284ms46780 KiB
72Accepted287ms54624 KiB
73Accepted296ms60660 KiB
74Accepted268ms46780 KiB
75Accepted642ms58800 KiB
76Accepted335ms31760 KiB
77Accepted129ms13160 KiB
78Accepted370ms31496 KiB
79Accepted218ms16188 KiB
80Accepted76ms5664 KiB
81Accepted78ms5664 KiB
82Accepted79ms5660 KiB
83Accepted649ms59004 KiB
84Accepted151ms13380 KiB
85Accepted244ms16656 KiB
86Accepted101ms6200 KiB
87Accepted100ms6072 KiB
88Accepted100ms6160 KiB
89Accepted103ms6200 KiB