193692025-12-05 12:09:37Nailuj217Gnome Sortcpp17Részben helyes 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Részben helyes1ms316 KiB
2Elfogadva1ms316 KiB
subtask23/5
3Elfogadva1ms316 KiB
4Elfogadva1ms316 KiB
5Részben helyes1ms316 KiB
subtask36/10
6Elfogadva1ms316 KiB
7Elfogadva1ms316 KiB
8Részben helyes1ms316 KiB
9Részben helyes1ms316 KiB
10Részben helyes1ms316 KiB
11Elfogadva1ms316 KiB
12Részben helyes1ms316 KiB
13Elfogadva1ms316 KiB
subtask421/35
14Elfogadva1ms316 KiB
15Elfogadva1ms316 KiB
16Részben helyes1ms316 KiB
17Részben helyes1ms316 KiB
18Részben helyes1ms316 KiB
19Elfogadva1ms316 KiB
20Részben helyes1ms316 KiB
21Elfogadva1ms316 KiB
22Elfogadva1ms316 KiB
23Részben helyes1ms316 KiB
24Részben helyes1ms316 KiB
25Részben helyes1ms316 KiB
26Részben helyes1ms324 KiB
27Elfogadva3ms316 KiB
28Részben helyes3ms580 KiB
29Részben helyes3ms596 KiB
30Részben helyes3ms564 KiB
31Részben helyes3ms564 KiB
32Elfogadva2ms316 KiB
33Részben helyes3ms688 KiB
34Elfogadva2ms500 KiB
subtask530/50
35Részben helyes1ms316 KiB
36Elfogadva1ms316 KiB
37Elfogadva1ms316 KiB
38Elfogadva1ms316 KiB
39Részben helyes1ms316 KiB
40Részben helyes1ms316 KiB
41Részben helyes1ms316 KiB
42Elfogadva1ms316 KiB
43Részben helyes1ms316 KiB
44Elfogadva1ms316 KiB
45Elfogadva1ms316 KiB
46Részben helyes1ms316 KiB
47Részben helyes1ms316 KiB
48Részben helyes1ms316 KiB
49Részben helyes1ms324 KiB
50Elfogadva3ms316 KiB
51Részben helyes3ms580 KiB
52Részben helyes3ms596 KiB
53Részben helyes3ms564 KiB
54Részben helyes3ms564 KiB
55Elfogadva2ms316 KiB
56Részben helyes3ms688 KiB
57Elfogadva2ms500 KiB
58Részben helyes6ms820 KiB
59Részben helyes27ms3044 KiB
60Elfogadva37ms2284 KiB
61Elfogadva37ms2212 KiB
62Részben helyes230ms22488 KiB
63Részben helyes231ms22488 KiB
64Elfogadva178ms4148 KiB
65Részben helyes246ms25996 KiB
66Elfogadva196ms8608 KiB
67Részben helyes284ms25304 KiB
68Részben helyes291ms25812 KiB
69Részben helyes316ms33752 KiB
70Részben helyes238ms22488 KiB
71Részben helyes250ms22488 KiB
72Részben helyes280ms25740 KiB
73Részben helyes310ms33496 KiB