#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; #define rep(a, b) for(int a = 0; a < (b); ++a) #define st first #define nd second #define pb push_back #define all(a) a.begin(), a.end() const int LIM=1e6+7; ll T[LIM]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); ll n; cin >> n; rep(i, n) { ll a; cin >> a; --a; T[a]=i; } ll ans=1, mi=T[n-1], ma=T[n-1]; for(ll i=2; i<=n; ++i) { if(i%2==0) { mi=min(mi, T[n-1-i/2]); ma=max(ma, T[n-1-i/2]); } if(ma-mi+1>i) continue; ans+=max(min(n-ma-1, i-ma+mi-1)-i+ma-mi+min(mi, i-ma+mi-1)+2, 0ll); } cout << 2*n+1 << " " << ans << '\n'; }
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 | #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; #define rep(a, b) for(int a = 0; a < (b); ++a) #define st first #define nd second #define pb push_back #define all(a) a.begin(), a.end() const int LIM=1e6+7; ll T[LIM]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); ll n; cin >> n; rep(i, n) { ll a; cin >> a; --a; T[a]=i; } ll ans=1, mi=T[n-1], ma=T[n-1]; for(ll i=2; i<=n; ++i) { if(i%2==0) { mi=min(mi, T[n-1-i/2]); ma=max(ma, T[n-1-i/2]); } if(ma-mi+1>i) continue; ans+=max(min(n-ma-1, i-ma+mi-1)-i+ma-mi+min(mi, i-ma+mi-1)+2, 0ll); } cout << 2*n+1 << " " << ans << '\n'; } |