193702025-12-05 12:16:24Nailuj217Gnome Sortcpp17Elfogadva 100/100763ms55432 KiB
#include <bits/stdc++.h>
#define ll long long
using namespace std;



int main() {


    ll n;
    cin >> n;
    vector<ll> seq(n);
    for (int i = 0; i < n; i++) cin >> seq[i];

    vector<bool> used(n, false);
    vector<vector<ll>> circles;
    ll k;
    for (int i = 0; i < n; i++) {
        if (used[i]) continue;
        if (seq[i] == i) continue;
        circles.push_back({i});
        k = seq[i];
        while (k != i) {
            used[k] = true;
            circles.back().push_back(k);
            k = seq[k];
        }
    }
    for (auto &c: circles) {
        sort(c.begin(), c.end());
        for (int i = 0; i < c.size() - 1; i++) {
            if (seq[c[i]] < seq[c[i+1]]) {
                cout << "NO" << endl;
                return 0;
            }
        }
    }
    cout << "YES" << endl;

    vector<pair<ll, ll>> ps;
    for (auto &c: circles) {
        ps.push_back({c[0], c[1]});
    }

    sort(ps.begin(), ps.end());
    vector<vector<ll>> sets;
    set<pair<ll, ll>> u;
    for (auto [a, b]: ps) {
        if (u.empty() || (*(--u.end())).first < b) {
            u.insert({b, sets.size()});
            sets.push_back({a, b});
        } else {
            pair<ll, ll> it = *u.lower_bound({b, -1});
            u.erase(it);
            u.insert({b, it.second});
            sets[it.second].push_back(a);
            sets[it.second].push_back(b);
        }
    }
    cout << u.size() << endl;
    for (auto &s: sets) {
        sort(s.begin(), s.end());
        cout << s.size() << " ";
        for (auto a: s) cout << a << " ";
        cout << endl;
    }



    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Elfogadva1ms316 KiB
subtask25/5
3Elfogadva1ms508 KiB
4Elfogadva1ms316 KiB
5Elfogadva1ms316 KiB
subtask310/10
6Elfogadva1ms508 KiB
7Elfogadva1ms316 KiB
8Elfogadva1ms316 KiB
9Elfogadva1ms316 KiB
10Elfogadva1ms316 KiB
11Elfogadva1ms316 KiB
12Elfogadva1ms316 KiB
13Elfogadva1ms316 KiB
subtask435/35
14Elfogadva1ms508 KiB
15Elfogadva1ms316 KiB
16Elfogadva1ms316 KiB
17Elfogadva1ms316 KiB
18Elfogadva1ms316 KiB
19Elfogadva1ms316 KiB
20Elfogadva1ms316 KiB
21Elfogadva1ms316 KiB
22Elfogadva1ms508 KiB
23Elfogadva1ms500 KiB
24Elfogadva1ms316 KiB
25Elfogadva1ms508 KiB
26Elfogadva1ms316 KiB
27Elfogadva3ms316 KiB
28Elfogadva4ms564 KiB
29Elfogadva4ms616 KiB
30Elfogadva4ms692 KiB
31Elfogadva7ms952 KiB
32Elfogadva3ms316 KiB
33Elfogadva4ms564 KiB
34Elfogadva2ms316 KiB
subtask550/50
35Elfogadva1ms316 KiB
36Elfogadva1ms316 KiB
37Elfogadva1ms508 KiB
38Elfogadva1ms316 KiB
39Elfogadva1ms316 KiB
40Elfogadva1ms316 KiB
41Elfogadva1ms316 KiB
42Elfogadva1ms316 KiB
43Elfogadva1ms316 KiB
44Elfogadva1ms316 KiB
45Elfogadva1ms508 KiB
46Elfogadva1ms500 KiB
47Elfogadva1ms316 KiB
48Elfogadva1ms508 KiB
49Elfogadva1ms316 KiB
50Elfogadva3ms316 KiB
51Elfogadva4ms564 KiB
52Elfogadva4ms616 KiB
53Elfogadva4ms692 KiB
54Elfogadva7ms952 KiB
55Elfogadva3ms316 KiB
56Elfogadva4ms564 KiB
57Elfogadva2ms316 KiB
58Elfogadva8ms912 KiB
59Elfogadva37ms3372 KiB
60Elfogadva37ms2160 KiB
61Elfogadva39ms2212 KiB
62Elfogadva303ms28300 KiB
63Elfogadva312ms28380 KiB
64Elfogadva175ms4148 KiB
65Elfogadva340ms33240 KiB
66Elfogadva193ms8536 KiB
67Elfogadva393ms31704 KiB
68Elfogadva418ms31704 KiB
69Elfogadva749ms55432 KiB
70Elfogadva305ms27020 KiB
71Elfogadva321ms25228 KiB
72Elfogadva389ms31880 KiB
73Elfogadva763ms55432 KiB