#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; } |
English