#include <bits/stdc++.h> using namespace std; const int MOD = 1e9 + 7; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; vector<int> a(n), idx(n+1); for (int i = 0; i < n; i++){ cin >> a[i]; idx[a[i]] = i; } int beg = idx[n], end = idx[n]; long long ans = 1; for (int i = n-1, j = 2; i > 0; i--, j += 2){ if (idx[i] < beg) beg = idx[i]; if (idx[i] > end) end = idx[i]; if (end - beg + 1 <= j && j <= n){ int odchylenie = j - (end - beg + 1); ans += min(odchylenie, beg) + min(odchylenie, n-end-1) - odchylenie + 1; } if (end - beg + 1 <= j+1 && j+1 <= n){ int odchylenie = j+1 - (end - beg + 1); ans += min(odchylenie, beg) + min(odchylenie, n-end-1) - odchylenie + 1; } } cout << n+n+1 << " " << ans << "\n"; return 0; } /* 8 2 4 6 8 7 5 3 1 */
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #include <bits/stdc++.h> using namespace std; const int MOD = 1e9 + 7; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; vector<int> a(n), idx(n+1); for (int i = 0; i < n; i++){ cin >> a[i]; idx[a[i]] = i; } int beg = idx[n], end = idx[n]; long long ans = 1; for (int i = n-1, j = 2; i > 0; i--, j += 2){ if (idx[i] < beg) beg = idx[i]; if (idx[i] > end) end = idx[i]; if (end - beg + 1 <= j && j <= n){ int odchylenie = j - (end - beg + 1); ans += min(odchylenie, beg) + min(odchylenie, n-end-1) - odchylenie + 1; } if (end - beg + 1 <= j+1 && j+1 <= n){ int odchylenie = j+1 - (end - beg + 1); ans += min(odchylenie, beg) + min(odchylenie, n-end-1) - odchylenie + 1; } } cout << n+n+1 << " " << ans << "\n"; return 0; } /* 8 2 4 6 8 7 5 3 1 */ |