#include<bits/stdc++.h> using namespace std; #define ll long long int tab[1000005]; int main(){ int n; cin>>n; for(int i=0;i<n;i++){ cin>>tab[i]; } ll x=n/2+1; ll odl=1; ll wynik=1; ll maks_1=0; ll maks_2=0; ll dl_1=0; ll dl_2=0; while(n-odl>0){ //cout<<odl<<" "<<x<<" "; if(maks_1<x){ dl_1=0; for(int i=0;i<odl;i++){ if(tab[i]>=x){ maks_1=tab[i]; break; } dl_1++; } } if(maks_2<x){ dl_2=0; for(int i=n-1;i>=n-odl;i--){ if(tab[i]>=x){ maks_2=tab[i]; break; } dl_2++; } } //cout<<dl_1<<" "<<dl_2<<" "; if(dl_1+dl_2>=odl)wynik+=(min(dl_1, dl_2)+1)-(odl-max(dl_1, dl_2)); if((n-odl-1)%2==1)x++; odl++; //cout<<wynik<<"\n"; } cout<<n*2+1<<" "<<wynik; 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 48 | #include<bits/stdc++.h> using namespace std; #define ll long long int tab[1000005]; int main(){ int n; cin>>n; for(int i=0;i<n;i++){ cin>>tab[i]; } ll x=n/2+1; ll odl=1; ll wynik=1; ll maks_1=0; ll maks_2=0; ll dl_1=0; ll dl_2=0; while(n-odl>0){ //cout<<odl<<" "<<x<<" "; if(maks_1<x){ dl_1=0; for(int i=0;i<odl;i++){ if(tab[i]>=x){ maks_1=tab[i]; break; } dl_1++; } } if(maks_2<x){ dl_2=0; for(int i=n-1;i>=n-odl;i--){ if(tab[i]>=x){ maks_2=tab[i]; break; } dl_2++; } } //cout<<dl_1<<" "<<dl_2<<" "; if(dl_1+dl_2>=odl)wynik+=(min(dl_1, dl_2)+1)-(odl-max(dl_1, dl_2)); if((n-odl-1)%2==1)x++; odl++; //cout<<wynik<<"\n"; } cout<<n*2+1<<" "<<wynik; return 0; } |