Advertisement
Vic22

X92646 - Rotate vector

Jan 15th, 2020
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.86 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. vector<int> read_vector(int n) {
  6.      vector<int> v(n);
  7.      for (int i = 0; i < n; ++i)
  8.          cin >> v[i];
  9.      return v;
  10. }
  11.  
  12. void swap(int& x, int& y) {
  13.     int z = x;
  14.     x = y;
  15.     y = z;
  16. }
  17.  
  18. void reverse(vector<int>& v, int from, int to) {
  19.     for (int i = from; i <= to; ++i){
  20.         swap(v[i], v[to]);
  21.         --to;
  22.     }
  23. }
  24.  
  25. void rotate_right(vector<int>& v, int k) {
  26.     reverse (v, 0, v.size() - 1);
  27.     reverse (v, 0, k - 1);
  28.     reverse (v, k, v.size() - 1);
  29. }
  30.  
  31. void write_vector(const vector<int>& v) {
  32.     cout << v[0];
  33.     for (int i = 1; i < v.size(); ++i){
  34.         cout << ' ' << v[i];
  35.     }
  36. }
  37.  
  38. int main() {
  39.     int n;
  40.     cin >> n;
  41.     vector<int> v = read_vector(n);
  42.     int k;
  43.     cin >> k;
  44.     rotate_right(v, k);
  45.     write_vector(v);
  46.     cout << endl;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement