Niestety, nie byliśmy w stanie w pełni poprawnie wyświetlić tego pliku, ponieważ nie jest zakodowany w UTF-8. Możesz pobrać ten plik i spróbować otworzyć go samodzielnie.
 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
#include <iostream>
#include <algorithm>

using namespace std;

long long tab[1000007];
long long poz[1000007];

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	
	long long n;
	cin>>n;
	
	for (long long i = 0; i < n; i++) {
		cin>>tab[i];
		poz[tab[i]] = i;
	}
	
	long long spos = 0;
	long long lw = poz[n];
	long long pw = poz[n];
	for (long long i = n; i > 0; i--) {
		lw = min(lw, poz[i]);
		pw = max(pw, poz[i]);
		//cout<<i<<": lw = "<<lw<<" pw = "<<pw<<endl;
		if (pw - lw + 1 <= 2 * (n - i) && 2 * (n - i) <= n) { // przed�u�anie do parzystego
			//cout<<"parzyste:\n";
			long long d1 = min(lw, n - 1 - pw);
			long long d2 = max(lw, n - 1 - pw);
			long long dodobrania = (2 * (n - i)) - (pw - lw + 1);
			//cout<<"dodobrania = "<<dodobrania<<" d1 = "<<d1<<" d2 = "<<d2<<endl;
			long long ile = min(d1, dodobrania) - max(dodobrania - d2, (long long)(0)) + 1;
			//cout<<"przedluzam do "<<2 * (n - i)<<" na "<<ile<<" sposobow\n";
			spos += ile;
		}
		if (pw - lw + 1 <= 2 * (n - i) + 1 && 2 * (n - i) + 1 <= n) {
			//cout<<"nieparzyste:\n";
			long long d1 = min(lw, n - 1 - pw);
			long long d2 = max(lw, n - 1 - pw);
			long long dodobrania = (2 * (n - i) + 1) - (pw - lw + 1);
			//cout<<"dodobrania = "<<dodobrania<<" d1 = "<<d1<<" d2 = "<<d2<<endl;
			long long ile = min(d1, dodobrania) - max(dodobrania - d2, (long long)(0)) + 1;
			//cout<<"przedluzam do "<<2 * (n - i) + 1<<" na "<<ile<<" sposobow \n";	
			spos += ile;		
		}
	}
	cout<<(2 * n + 1)<<" "<<spos<<"\n";
}