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
#include<bits/stdc++.h>
using namespace std;
const int R=1e6+6;
int tab[R],pos[R];
int main()
{
   ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
   int n;cin>>n;
   for(int i=1;i<=n;i++)
   {
      int a;cin>>a;
      tab[i]=a;
      pos[a]=i;
   }
   int f=2*n+1;
   int cnt=2,a=n,b=n-1,l=pos[n],r=pos[n-1],l2=pos[n],r2=pos[n-1],c=n-1;
   if(l>r)swap(l,r);
   if(l2>r2)swap(l2,r2);
   for(int i=2;i<n;i++)
   {
      if(i%2)
      {
         int d=r2-l2+1;
         if(d<=i)
         {
            cnt+=1+min({(i-d),l2-1,n-r2});
         }
         c--;
         r2=max(r2,pos[c]);
         l2=min(l2,pos[c]);     
      }
      else
      {
         int d=r-l+1;
         if(d<=i)
         {
            cnt+=1+min({(i-d),l-1,n-r});
         }
         a--;
         b--;
         r=max({r,pos[a],pos[b]});
         l=min({l,pos[a],pos[b]});
      }
   }
   if(n==1)cnt--;
   cout<<f<<" "<<cnt<<"\n";
}