108012024-04-14 11:48:15AblablablaSzimmetrikus sorozatcpp17Elfogadva 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";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1748 KiB
2Elfogadva212ms24704 KiB
subtask29/9
3Elfogadva3ms2252 KiB
4Elfogadva3ms2352 KiB
5Elfogadva3ms2568 KiB
6Elfogadva3ms2784 KiB
7Elfogadva3ms2868 KiB
subtask314/14
8Elfogadva3ms2920 KiB
9Elfogadva3ms2920 KiB
10Elfogadva3ms2916 KiB
11Elfogadva3ms3044 KiB
12Elfogadva3ms3052 KiB
13Elfogadva3ms3300 KiB
subtask425/25
14Elfogadva3ms3528 KiB
15Elfogadva4ms3796 KiB
16Elfogadva6ms4128 KiB
17Elfogadva7ms4292 KiB
18Elfogadva6ms4028 KiB
19Elfogadva6ms3828 KiB
20Elfogadva6ms4080 KiB
21Elfogadva4ms3796 KiB
subtask522/22
22Elfogadva352ms46540 KiB
23Elfogadva337ms66104 KiB
24Elfogadva328ms66356 KiB
25Elfogadva337ms46796 KiB
26Elfogadva301ms46768 KiB
27Elfogadva286ms64204 KiB
28Elfogadva293ms64104 KiB
29Elfogadva305ms46680 KiB
30Elfogadva275ms46668 KiB
31Elfogadva275ms65560 KiB
32Elfogadva272ms65636 KiB
33Elfogadva264ms46668 KiB
34Elfogadva284ms46780 KiB
35Elfogadva287ms54624 KiB
36Elfogadva296ms60660 KiB
37Elfogadva268ms46780 KiB
subtask630/30
38Elfogadva3ms4060 KiB
39Elfogadva209ms26896 KiB
40Elfogadva3ms2252 KiB
41Elfogadva3ms2352 KiB
42Elfogadva3ms2568 KiB
43Elfogadva3ms2784 KiB
44Elfogadva3ms2868 KiB
45Elfogadva3ms2920 KiB
46Elfogadva3ms2920 KiB
47Elfogadva3ms2916 KiB
48Elfogadva3ms3044 KiB
49Elfogadva3ms3052 KiB
50Elfogadva3ms3300 KiB
51Elfogadva3ms3528 KiB
52Elfogadva4ms3796 KiB
53Elfogadva6ms4128 KiB
54Elfogadva7ms4292 KiB
55Elfogadva6ms4028 KiB
56Elfogadva6ms3828 KiB
57Elfogadva6ms4080 KiB
58Elfogadva4ms3796 KiB
59Elfogadva352ms46540 KiB
60Elfogadva337ms66104 KiB
61Elfogadva328ms66356 KiB
62Elfogadva337ms46796 KiB
63Elfogadva301ms46768 KiB
64Elfogadva286ms64204 KiB
65Elfogadva293ms64104 KiB
66Elfogadva305ms46680 KiB
67Elfogadva275ms46668 KiB
68Elfogadva275ms65560 KiB
69Elfogadva272ms65636 KiB
70Elfogadva264ms46668 KiB
71Elfogadva284ms46780 KiB
72Elfogadva287ms54624 KiB
73Elfogadva296ms60660 KiB
74Elfogadva268ms46780 KiB
75Elfogadva642ms58800 KiB
76Elfogadva335ms31760 KiB
77Elfogadva129ms13160 KiB
78Elfogadva370ms31496 KiB
79Elfogadva218ms16188 KiB
80Elfogadva76ms5664 KiB
81Elfogadva78ms5664 KiB
82Elfogadva79ms5660 KiB
83Elfogadva649ms59004 KiB
84Elfogadva151ms13380 KiB
85Elfogadva244ms16656 KiB
86Elfogadva101ms6200 KiB
87Elfogadva100ms6072 KiB
88Elfogadva100ms6160 KiB
89Elfogadva103ms6200 KiB