#include<bits/stdc++.h>
using namespace std;
#define vi vector<int>
#define f first
#define s second
#define sz(s) (int)s.size()
#define pb push_back
#define ii pair<int,int>
#define vii vector<ii>
const int N = 1e6 + 7;
int tab[N];
int where[N];
#define ll long long
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
for(int i = 0; i < n; i++){
cin >> tab[i];
where[tab[i]] = i;
}
int l = where[n];
int r = where[n];
ll ans = 1;
for(int i = n - 1; i >= (n + 1) / 2; i--){
l = min(l, where[i]);
r = max(r, where[i]);
int lo = -1;
int hi = n;
int dl = (n - i + 1) * 2 - 2;
// cout << "i << " << i << ' ' << l << ' ' << r << ' ' << lo << ' ' << hi << " " << dl << endl;
ans += max(0, min({dl - (r - l + 1) + 1, (hi - lo - 1) - dl + 1, l - lo, hi - r}));
// cout << "MALE ANS " << ans << endl;
if(i == n / 2 and n % 2 == 0)
break;
dl++;
ans += max(0, min({dl - (r - l + 1) + 1, (hi - lo - 1) - dl + 1, l - lo, hi - r}));
// cout << "ANS " << ans << '\n';
}
cout << n * 2 + 1 << ' ' << ans << '\n';
return 0;
}
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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #include<bits/stdc++.h> using namespace std; #define vi vector<int> #define f first #define s second #define sz(s) (int)s.size() #define pb push_back #define ii pair<int,int> #define vii vector<ii> const int N = 1e6 + 7; int tab[N]; int where[N]; #define ll long long int main(){ ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; for(int i = 0; i < n; i++){ cin >> tab[i]; where[tab[i]] = i; } int l = where[n]; int r = where[n]; ll ans = 1; for(int i = n - 1; i >= (n + 1) / 2; i--){ l = min(l, where[i]); r = max(r, where[i]); int lo = -1; int hi = n; int dl = (n - i + 1) * 2 - 2; // cout << "i << " << i << ' ' << l << ' ' << r << ' ' << lo << ' ' << hi << " " << dl << endl; ans += max(0, min({dl - (r - l + 1) + 1, (hi - lo - 1) - dl + 1, l - lo, hi - r})); // cout << "MALE ANS " << ans << endl; if(i == n / 2 and n % 2 == 0) break; dl++; ans += max(0, min({dl - (r - l + 1) + 1, (hi - lo - 1) - dl + 1, l - lo, hi - r})); // cout << "ANS " << ans << '\n'; } cout << n * 2 + 1 << ' ' << ans << '\n'; return 0; } |
English