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
#include <bits/stdc++.h>
using namespace std;

constexpr long long maxi = 1e6;

long long indeksy[maxi + 7];


int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    long long n; cin >> n;
    long long z;
    for(long long i = 1; i <= n; i++)
    {
        cin >> z;
        indeksy[z] = i;
    }

    cout << n * 2 + 1 << " ";

    long long ile = 1;

    long long lewa = indeksy[n], prawa = indeksy[n];

    for(long long d = 2; d <= n; d++)
    {
        long long szuk = (d / 2) + 1;

        szuk = indeksy[n - szuk + 1];

        if(szuk < lewa) lewa = szuk;
        if(szuk > prawa) prawa = szuk;

        long long dlugosc = prawa - lewa + 1;
        if(dlugosc > d) continue;


        long long reszta = d - dlugosc;
        long long z_lewej = lewa - 1;
        long long z_prawej = n - prawa;

        if(z_lewej + z_prawej < reszta) continue;


       ile += max((long long)0, min(reszta, z_lewej) - max((long long)0, reszta - z_prawej) + 1);
    }
    cout << ile << endl;
}