193692025-12-05 12:09:37Nailuj217Gnome Sortcpp17Partially correct 60/100316ms33752 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());
    set<ll> u;
    for (auto [a, b]: ps) {
        if (u.empty() || *(--u.end()) < b) {
            u.insert(b);
        } else {
            auto it = u.lower_bound(b);
            u.erase(it);
            u.insert(b);
        }
    }
    cout << u.size() << endl;




    return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Partially correct1ms316 KiB
2Accepted1ms316 KiB
subtask23/5
3Accepted1ms316 KiB
4Accepted1ms316 KiB
5Partially correct1ms316 KiB
subtask36/10
6Accepted1ms316 KiB
7Accepted1ms316 KiB
8Partially correct1ms316 KiB
9Partially correct1ms316 KiB
10Partially correct1ms316 KiB
11Accepted1ms316 KiB
12Partially correct1ms316 KiB
13Accepted1ms316 KiB
subtask421/35
14Accepted1ms316 KiB
15Accepted1ms316 KiB
16Partially correct1ms316 KiB
17Partially correct1ms316 KiB
18Partially correct1ms316 KiB
19Accepted1ms316 KiB
20Partially correct1ms316 KiB
21Accepted1ms316 KiB
22Accepted1ms316 KiB
23Partially correct1ms316 KiB
24Partially correct1ms316 KiB
25Partially correct1ms316 KiB
26Partially correct1ms324 KiB
27Accepted3ms316 KiB
28Partially correct3ms580 KiB
29Partially correct3ms596 KiB
30Partially correct3ms564 KiB
31Partially correct3ms564 KiB
32Accepted2ms316 KiB
33Partially correct3ms688 KiB
34Accepted2ms500 KiB
subtask530/50
35Partially correct1ms316 KiB
36Accepted1ms316 KiB
37Accepted1ms316 KiB
38Accepted1ms316 KiB
39Partially correct1ms316 KiB
40Partially correct1ms316 KiB
41Partially correct1ms316 KiB
42Accepted1ms316 KiB
43Partially correct1ms316 KiB
44Accepted1ms316 KiB
45Accepted1ms316 KiB
46Partially correct1ms316 KiB
47Partially correct1ms316 KiB
48Partially correct1ms316 KiB
49Partially correct1ms324 KiB
50Accepted3ms316 KiB
51Partially correct3ms580 KiB
52Partially correct3ms596 KiB
53Partially correct3ms564 KiB
54Partially correct3ms564 KiB
55Accepted2ms316 KiB
56Partially correct3ms688 KiB
57Accepted2ms500 KiB
58Partially correct6ms820 KiB
59Partially correct27ms3044 KiB
60Accepted37ms2284 KiB
61Accepted37ms2212 KiB
62Partially correct230ms22488 KiB
63Partially correct231ms22488 KiB
64Accepted178ms4148 KiB
65Partially correct246ms25996 KiB
66Accepted196ms8608 KiB
67Partially correct284ms25304 KiB
68Partially correct291ms25812 KiB
69Partially correct316ms33752 KiB
70Partially correct238ms22488 KiB
71Partially correct250ms22488 KiB
72Partially correct280ms25740 KiB
73Partially correct310ms33496 KiB