#include <iostream> using namespace std; int pozycje[1000007]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int ilosc, x; int wynik=0; int lewy=0, prawy=0; int przedzial=0; int elementy=0; cin >> ilosc; for(int i=1; i<=ilosc; ++i) { cin>>x; pozycje[x] = i; } int obecna=ilosc; lewy= pozycje[obecna]; prawy = pozycje[obecna]; elementy++; wynik++; if( ilosc >= 2) { for (int i = 1; i < ilosc; ++i) { if( pozycje[ilosc-i] > prawy ){ prawy = pozycje[ilosc-i]; } else if( pozycje[ilosc-i] < lewy ) { lewy = pozycje[ilosc-i]; } elementy++; przedzial = prawy - lewy +1; if( elementy >= przedzial/2 +1 ){ wynik++; } } } cout << ilosc*2 + 1 << " " << 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 47 48 49 50 51 52 53 | #include <iostream> using namespace std; int pozycje[1000007]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int ilosc, x; int wynik=0; int lewy=0, prawy=0; int przedzial=0; int elementy=0; cin >> ilosc; for(int i=1; i<=ilosc; ++i) { cin>>x; pozycje[x] = i; } int obecna=ilosc; lewy= pozycje[obecna]; prawy = pozycje[obecna]; elementy++; wynik++; if( ilosc >= 2) { for (int i = 1; i < ilosc; ++i) { if( pozycje[ilosc-i] > prawy ){ prawy = pozycje[ilosc-i]; } else if( pozycje[ilosc-i] < lewy ) { lewy = pozycje[ilosc-i]; } elementy++; przedzial = prawy - lewy +1; if( elementy >= przedzial/2 +1 ){ wynik++; } } } cout << ilosc*2 + 1 << " " << wynik; } |