#include <bits/stdc++.h> using namespace std; int main() { int n, liczba, wartn, wynik=1, l, p, lo, po; cin>>n; int tab[n+1]; for(int i=0;i<n;i++) { cin>>liczba; tab[liczba]=i+1; if(liczba==n) { wartn=i+1; l=wartn; p=wartn; lo=wartn; po=wartn; } } for(int i=1;i<=n;i++) { tab[i]=tab[i]-wartn; } /*for(int i=1;i<=n;i++) cout<<tab[i][0]<<" "; cout<<endl; for(int i=1;i<=n;i++) cout<<tab[i][1]<<" "; //cout<<2*n+1; cout<<endl<<endl;*/ cout<<2*n+1<<" "; for(int i=n-1;i>0;i--) { lo=max(1,min(lo,l+tab[i])); po=min(n,max(po,p+tab[i])); if(tab[i]>=0) wynik=wynik+max(0,po-lo-tab[i]); else wynik=wynik+max(0,po-lo+tab[i]); //cout<<i<<" "<<lo<<" "<<po<<" "<<wynik<<endl; } cout<<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 35 36 37 38 39 40 41 42 43 44 45 46 | #include <bits/stdc++.h> using namespace std; int main() { int n, liczba, wartn, wynik=1, l, p, lo, po; cin>>n; int tab[n+1]; for(int i=0;i<n;i++) { cin>>liczba; tab[liczba]=i+1; if(liczba==n) { wartn=i+1; l=wartn; p=wartn; lo=wartn; po=wartn; } } for(int i=1;i<=n;i++) { tab[i]=tab[i]-wartn; } /*for(int i=1;i<=n;i++) cout<<tab[i][0]<<" "; cout<<endl; for(int i=1;i<=n;i++) cout<<tab[i][1]<<" "; //cout<<2*n+1; cout<<endl<<endl;*/ cout<<2*n+1<<" "; for(int i=n-1;i>0;i--) { lo=max(1,min(lo,l+tab[i])); po=min(n,max(po,p+tab[i])); if(tab[i]>=0) wynik=wynik+max(0,po-lo-tab[i]); else wynik=wynik+max(0,po-lo+tab[i]); //cout<<i<<" "<<lo<<" "<<po<<" "<<wynik<<endl; } cout<<wynik; } |