#include <bits/stdc++.h>
using namespace std;
const int mx=1e6+5;
int n,x,lewy,prawy,dl,l,p,k;
int poz[mx];
long long wyn;
int main(){
ios::sync_with_stdio(false);
cin>>n;
for(int i=0;i<n;++i){
cin>>x;
poz[x]=i;
}
wyn=1;
dl=1;
lewy=poz[n];
prawy=poz[n];
for(int dl=2;dl<=n;++dl){
if(dl%2==0){
lewy=min(lewy,poz[n-dl/2]);
prawy=max(prawy,poz[n-dl/2]);
}
k=dl-(prawy-lewy+1);
if(k<0)continue;
l=lewy;
p=n-1-prawy;
l=min(l,k);
p=min(p,k);
wyn+=(long long)(l+p-k+1);
}
cout<<2*n+1<<" "<<wyn;
return 0;
}
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 | #include <bits/stdc++.h> using namespace std; const int mx=1e6+5; int n,x,lewy,prawy,dl,l,p,k; int poz[mx]; long long wyn; int main(){ ios::sync_with_stdio(false); cin>>n; for(int i=0;i<n;++i){ cin>>x; poz[x]=i; } wyn=1; dl=1; lewy=poz[n]; prawy=poz[n]; for(int dl=2;dl<=n;++dl){ if(dl%2==0){ lewy=min(lewy,poz[n-dl/2]); prawy=max(prawy,poz[n-dl/2]); } k=dl-(prawy-lewy+1); if(k<0)continue; l=lewy; p=n-1-prawy; l=min(l,k); p=min(p,k); wyn+=(long long)(l+p-k+1); } cout<<2*n+1<<" "<<wyn; return 0; } |
English