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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
//Karol Sygiet                                                                  
#include <bits/stdc++.h>                                                        
                                                                                
typedef long long ll;                                                           

using namespace std;
                                                                        
ll min(ll l1, ll l2) {                                                           
    if (l1<l2) {
        return l1;
    } else {
        return l2;                                       
    }
}                                                                                                                                    
                                                                                
int main() {                                                                     
    ll iloscLiczb;                                                              
    cin >> iloscLiczb;                                                          
                                                                                
    vector<ll> liczby;                                                          
    vector<ll> indeksy(iloscLiczb+1);                                           
    ll wynik = 0;                                                               
    ll tmp;                                                                     
                                                                                
    for (ll i = 0; i < iloscLiczb; i++) {                                        
        cin >> tmp;                                                             
        liczby.push_back(tmp);                                                  
        indeksy[liczby[i]] = i;                                                 
    }                                                                                                                        
                                                                                
    ll kresDolny = indeksy[iloscLiczb];                                         
    ll kresGorny = indeksy[iloscLiczb];                                         
                                                                                
    for (ll i = 0; i <= iloscLiczb/2 + 1; i++) {                                 
        if (indeksy[iloscLiczb-i] < kresDolny) {                                 
            kresDolny = indeksy[iloscLiczb-i];                                  
        }else if (indeksy[iloscLiczb-i] > kresGorny) {                           
            kresGorny = indeksy[iloscLiczb-i];                                  
        }                                                                       
                                                                                
        ll odcinek = kresGorny - kresDolny + 1;                                 
                                                                                
        if (odcinek == 2*i && 2*i <= iloscLiczb) {                               
            wynik++;                                                            
        }else if(odcinek < 2*i && 2*i <= iloscLiczb) {                           
            if (iloscLiczb-1-kresGorny == 0 || kresDolny == 0) {                 
                wynik++;                                                        
            } else if (kresGorny - 2*i + 1 < 0 && kresDolny + 2*i > iloscLiczb) {                                                                                
                wynik += iloscLiczb - 2* i + 1;                                 
            } else if (kresGorny - 2*i + 1 < 0 || kresDolny + 2*i > iloscLiczb) {
                wynik += min(kresDolny+1, iloscLiczb-kresGorny);                
            } else {                                                            
                wynik += 2*i - odcinek + 1;                                     
            }                                                                   
        }                                                                       
                                                                                
        if (odcinek == 2*i + 1 && 2*i + 1 <= iloscLiczb) {                       
            wynik++;                                                            
        }                                                                       
        else if(odcinek < 2*i + 1 && 2*i + 1 <= iloscLiczb) {                    
            if (iloscLiczb-1-kresGorny == 0 || kresDolny == 0) {                
                wynik++;                                                        
            } else if (kresGorny - 2*i < 0 && kresDolny + 2*i >= iloscLiczb) {   
                wynik += iloscLiczb - 2* i;                                     
            } else if (kresGorny - 2*i < 0 || kresDolny + 2*i >= iloscLiczb) {   
                wynik += min(kresDolny+1, iloscLiczb-kresGorny);                
            } else {                                                            
                wynik += 2*i - odcinek + 2;                                     
            }                                                                   
        }                                                                       
    }                                                                           
                                                                                
    wynik = iloscLiczb == 1 ? 1 : wynik;                                        
                                                                                
    cout << ((2*iloscLiczb) + 1) << " " <<  wynik;                                           
                                                                              
    return 0;                                                                   
}