#include <bits/stdc++.h>
using namespace std;
int main(){
// freopen("input.in", "r", stdin);
// freopen("output.out", "w", stdout);
ios_base::sync_with_stdio(0);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin>>n;
vector <int> pozycje (n+1,0);
int a;
for (int i=1; i<=n; i++){
cin>>a;
pozycje[a]=i;
}
int wynik=1+(2*n);
int k=1;
long long kombinacje=1;
int odl;
int maks_odl=-1;
for (int i=n-1; i>=((n+1)/2); i--){
odl=abs(pozycje[n]-pozycje[i]);
maks_odl=max(maks_odl,odl);
if (odl<=k and maks_odl<=k){
kombinacje++;
}
k++;
}
long long kom_l=0;
long long kom_p=0;
for (int i=n-k;i>0;i--){
if (pozycje[i]<pozycje[n]) kom_l++;
else kom_p++;
}
kombinacje+=kom_l+kom_p+(kom_l*kom_p);
cout<<wynik<<" "<<kombinacje;
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <bits/stdc++.h> using namespace std; int main(){ // freopen("input.in", "r", stdin); // freopen("output.out", "w", stdout); ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); int n; cin>>n; vector <int> pozycje (n+1,0); int a; for (int i=1; i<=n; i++){ cin>>a; pozycje[a]=i; } int wynik=1+(2*n); int k=1; long long kombinacje=1; int odl; int maks_odl=-1; for (int i=n-1; i>=((n+1)/2); i--){ odl=abs(pozycje[n]-pozycje[i]); maks_odl=max(maks_odl,odl); if (odl<=k and maks_odl<=k){ kombinacje++; } k++; } long long kom_l=0; long long kom_p=0; for (int i=n-k;i>0;i--){ if (pozycje[i]<pozycje[n]) kom_l++; else kom_p++; } kombinacje+=kom_l+kom_p+(kom_l*kom_p); cout<<wynik<<" "<<kombinacje; return 0; } |
English