#include #include using namespace std; vector vzor; vector ciel; vector operacie; int dlzka; int pozicia(int a){ //Vrati pozicia cisla a v poli vzor for(int i = 0; i < dlzka; i++) if(vzor[i] == a) return i; } void reverse(int a){ if(a == 1) return; operacie.push_back(a); vector v(vzor); for(int i = 0; i < a; i++){ vzor[i] = v[a - i - 1]; } } void vypispole(){ for(int i = 0; i < (int)vzor.size(); i++) cout << vzor[i] << " "; } int main ( int argc, char**argv ) { /* vzor.push_back(1); vzor.push_back(4); vzor.push_back(8); vzor.push_back(9); vzor.push_back(10); //vzor.push_back(4); ciel.push_back(4); ciel.push_back(8); ciel.push_back(9); ciel.push_back(10); ciel.push_back(1); //ciel.push_back(4); */ cin >> dlzka; while(dlzka != 0){ int x; for(int i = 0; i < dlzka; i++){ cin >> x; vzor.push_back(x); } for(int i = 0; i < dlzka; i++){ cin >> x; ciel.push_back(x); } for(int i = dlzka - 1; i >= 0; i--){ if(vzor[i] != ciel[i]){ int k = pozicia(ciel[i]); //cout << "pisem vzor" << endl; //vypispole(); //cout << "hladam " << ciel[i] << endl; //cout << "pozicia je: " << k; //cout <<"otacam " << k+1 << endl; reverse(k + 1); //vypispole(); reverse(i + 1); } } //cout << endl << endl << endl; for(int i = 0; i <(int)operacie.size(); i++){ if(i > 52) break; cout << operacie[i] << " "; } cout << endl; cin >> dlzka; operacie.resize(0); vzor.resize(0); ciel.resize(0); } return 0; }