typedeflonglong ll; usingnamespace std; constint N = 1e5 + 5; int n, k, flag = 0, a[N], pos[N]; deque<int> q;
intmain(){ cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; pos[a[i]] = i; } for (int i = 1; i <= n; i++) { if (pos[i] != i) { k = pos[i] - i + 1; break; } } if (!k) { cout << "yes\n" << "1"; return0; } for (int i = 1; i <= k; i++) q.push_back(a[i]); for (int i = k + 1; i <= n + k; i++) { if (!(flag % 2)) { if (i - k == q.front()) q.pop_front(); elseif (i - k == q.back()) flag ^= 1, q.pop_back(); else { cout << "no"; return0; } } elseif (flag % 2) { if (i - k == q.back()) q.pop_back(); elseif (i - k == q.front()) flag ^= 1, q.pop_front(); else { cout << "no"; return0; } } if (i <= n) { if (flag % 2) q.push_front(a[i]); else q.push_back(a[i]); } } cout << "yes\n" << k; return0; }
v1.5.2