#include <bits/stdc++.h> using namespace std; int n,a,p,k,x,y; int t[1000005]; long long wynik; int main() { scanf("%d",&n); for (int i=1; i<=n; i++) { scanf("%d",&a); t[a]=i; } p=t[n]; k=t[n]; wynik=1; for (int i=2; i<=n; i++) { a=t[n-i/2]; if (a<p) p=a; if (a>k) k=a; //cout << p << " " << k << endl; if (k-p+1>i) continue; x=max(1,k-i+1); y=min(n,p+i-1); y-=i; wynik+=y-x+2; //cout << wynik << endl; } printf("%d %lld\n",2*n+1,wynik); }
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 | #include <bits/stdc++.h> using namespace std; int n,a,p,k,x,y; int t[1000005]; long long wynik; int main() { scanf("%d",&n); for (int i=1; i<=n; i++) { scanf("%d",&a); t[a]=i; } p=t[n]; k=t[n]; wynik=1; for (int i=2; i<=n; i++) { a=t[n-i/2]; if (a<p) p=a; if (a>k) k=a; //cout << p << " " << k << endl; if (k-p+1>i) continue; x=max(1,k-i+1); y=min(n,p+i-1); y-=i; wynik+=y-x+2; //cout << wynik << endl; } printf("%d %lld\n",2*n+1,wynik); } |