171692025-05-28 08:58:35AblablablaSzimmetrikus sorozatcpp17Elfogadva 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";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Elfogadva108ms8108 KiB
subtask29/9
3Elfogadva2ms316 KiB
4Elfogadva1ms328 KiB
5Elfogadva2ms316 KiB
6Elfogadva2ms508 KiB
7Elfogadva1ms316 KiB
subtask314/14
8Elfogadva1ms316 KiB
9Elfogadva1ms316 KiB
10Elfogadva1ms500 KiB
11Elfogadva1ms316 KiB
12Elfogadva1ms316 KiB
13Elfogadva1ms316 KiB
subtask425/25
14Elfogadva1ms316 KiB
15Elfogadva2ms316 KiB
16Elfogadva3ms564 KiB
17Elfogadva4ms564 KiB
18Elfogadva3ms564 KiB
19Elfogadva3ms316 KiB
20Elfogadva3ms316 KiB
21Elfogadva3ms316 KiB
subtask522/22
22Elfogadva170ms13624 KiB
23Elfogadva197ms22440 KiB
24Elfogadva197ms22440 KiB
25Elfogadva172ms13620 KiB
26Elfogadva172ms13620 KiB
27Elfogadva195ms21416 KiB
28Elfogadva190ms21412 KiB
29Elfogadva174ms13636 KiB
30Elfogadva167ms13484 KiB
31Elfogadva188ms22184 KiB
32Elfogadva194ms22184 KiB
33Elfogadva175ms13484 KiB
34Elfogadva165ms13488 KiB
35Elfogadva186ms17460 KiB
36Elfogadva193ms19880 KiB
37Elfogadva175ms13492 KiB
subtask630/30
38Elfogadva1ms316 KiB
39Elfogadva108ms8108 KiB
40Elfogadva2ms316 KiB
41Elfogadva1ms328 KiB
42Elfogadva2ms316 KiB
43Elfogadva2ms508 KiB
44Elfogadva1ms316 KiB
45Elfogadva1ms316 KiB
46Elfogadva1ms316 KiB
47Elfogadva1ms500 KiB
48Elfogadva1ms316 KiB
49Elfogadva1ms316 KiB
50Elfogadva1ms316 KiB
51Elfogadva1ms316 KiB
52Elfogadva2ms316 KiB
53Elfogadva3ms564 KiB
54Elfogadva4ms564 KiB
55Elfogadva3ms564 KiB
56Elfogadva3ms316 KiB
57Elfogadva3ms316 KiB
58Elfogadva3ms316 KiB
59Elfogadva170ms13624 KiB
60Elfogadva197ms22440 KiB
61Elfogadva197ms22440 KiB
62Elfogadva172ms13620 KiB
63Elfogadva172ms13620 KiB
64Elfogadva195ms21416 KiB
65Elfogadva190ms21412 KiB
66Elfogadva174ms13636 KiB
67Elfogadva167ms13484 KiB
68Elfogadva188ms22184 KiB
69Elfogadva194ms22184 KiB
70Elfogadva175ms13484 KiB
71Elfogadva165ms13488 KiB
72Elfogadva186ms17460 KiB
73Elfogadva193ms19880 KiB
74Elfogadva175ms13492 KiB
75Elfogadva268ms17576 KiB
76Elfogadva192ms10560 KiB
77Elfogadva101ms4272 KiB
78Elfogadva194ms10548 KiB
79Elfogadva146ms5552 KiB
80Elfogadva199ms9012 KiB
81Elfogadva190ms8896 KiB
82Elfogadva193ms9016 KiB
83Elfogadva287ms18088 KiB
84Elfogadva122ms4540 KiB
85Elfogadva166ms5808 KiB
86Elfogadva215ms9268 KiB
87Elfogadva217ms9268 KiB
88Elfogadva215ms9268 KiB
89Elfogadva216ms9268 KiB