Przedszkolaki wyruszyły na spacer do parku. Grupa n osób ustawiła się przy wężu dość przypadkowo. Tymczasem Przedszkolanka - Pani Sylwia, preferuje aby osoby najniższe szły z przodu, a najwyższe z tyłu.
Porównuje więc stojących przedszkolaków parami (ostatni z przedostatnim, przedostatni z trzecim od końca, trzeci od końca z czwartym od końca itd) i jeśli to konieczne zamienia ich miejscami. Postępując w ten sposób przeszła od końca do początku grupy i spostrzegła, że grupa jeszcze nie jest jeszcze posortowana, więc postanowiła wykonać tę czynność jeszcze raz.
Napisz program, który wypisze ile minimalnie przejść musi wykonać Pani Sylwia, aby grupa została ustawiona w wymaganym porządku.
Wejście:
Pierwszy wiersz zawiera dwie liczby naturalne n, k (1 ≤ n, k ≤ 30 ) n - liczba przedszkolaków
Drugi wiersz zawiera n liczb naturalnych ai (0 ≤ ai ≤ 200 ) - wzrost kolejnych przedszkolaków.
Wyjście
Pierwszy i jedyny wiersz wyjścia zawiera liczbę naturalną określającą ilość przejść Pani Przedszkolanki
Przykład:
Dla danych wejściowych:
10
77 83 85 81 89 80 72 91 76 84
poprawną odpowiedzią jest:
5
Coś takiego mam, ale nie działa jak trzeba.
#include <iostream> #include <algorithm>
using namespace std;
int main() {int n,k=0;
cin>>n;
int T[30], t[30], t2[30];
for(int i=0;i<n;i++) { cin>>T[i]; }
for(int i=0;i<n;i++) { t[i]=T[i]; }
for(int i=0;i<n-1;i++) { for(int i=n-1;i>=0;i--) { if(T[i]<T[i-1]) { int pom=T[i]; T[i]=T[i-1]; T[i-1]=pom; } } }
for(int i=0;i<n;i++) { t2[i]=T[i]; }
while(!std::equal(t2, t2 + n, t))
{ for(int i=0;i<n-1;i++) { for(int i=n-1;i>=0;i--) { if(T[i]<T[i-1]) { int pom=T[i]; T[i]=T[i-1]; T[i-1]=pom; } } } k++; }
cout<<k;
return 0; }
Proszę o pomoc!