// Tomasz Przedpełski
// Algorytmy: rotate rotate_copy
//
 #include <algorithm>
 #include <vector>
 #include <iostream>

 using namespace std;

 int main()
 {
   
   //rotate:
   cout << "rotate:" << endl << endl;
   
   //Inicjalizacja wektora przy użyciu tablicy int
   int arr[7] = {2,4,6,8,1,3,5};
   vector<int> v_rotate(arr, arr+7);

   //Wydruk elementów przed użyciem algorytmu
   cout << "Elementy przed rotate: " << endl << "     ";
   for (int i = 0; i < 7; i++)
   {
     cout << v_rotate[i] << " ";
   }
   cout << endl << endl;
   // Wydruk: 2 4 6 8 1 3 5

   //Rotacja
   rotate(v_rotate.begin(), v_rotate.begin()+4, v_rotate.end());

   //Wydruk elementów po użyciu algorytmu
   cout << "Elementy po rotate dla middle = 5: " << endl << "     ";
   for (int i = 0; i < 7; i++)
   {
     cout << v_rotate[i] << " ";
   }
   cout << endl << endl;
   // Wydruk: 1 3 5 2 4 6 8
   
   //rotate_copy:
   cout << "rotate_copy:" << endl << endl;
   
   //Inicjalizacja wektora przy użyciu tablicy int
   vector<int> v_rotate_copy1(arr, arr+7);
   
   //Inicjalizacja wektora pustego
   vector<int> v_rotate_copy2(7);
   
   //Wydruk elementów przed użyciem algorytmu
   cout << "Elementy przed rotate_copy: " << endl << "     ";
   for (int i = 0; i < 7; i++)
   {
     cout << v_rotate_copy1[i] << " ";
   }
   cout << endl << endl;
   // Wydruk: 2 4 6 8 1 3 5
   
   //Rotacja
   rotate_copy(v_rotate_copy1.begin(), v_rotate_copy1.begin()+4, v_rotate_copy1.end(), v_rotate_copy2.begin());
   
   //Wydruk elementów po użyciu algorytmu
   cout << "Elementy po rotate_copy dla middle = 5: " << endl << "     ";
   cout << "wektor wejściowy:" << endl << "     ";
   for (int i = 0; i < 7; i++)
   {
     cout << v_rotate_copy1[i] << " ";
   }
   cout << endl << "     ";
   // Wydruk 2 4 6 8 1 3 5
   cout << "wektor wyjściowy:" << endl << "     ";
   for (int i = 0; i < 7; i++)
   {
     cout << v_rotate_copy2[i] << " ";
   }
   cout << endl << endl;
   // Wydruk: 1 3 5 2 4 6 8
   
   return 0;
 }
