#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;
}
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; } |
English