NickAndNick

223600282

Jan 26th, 2021 (edited)
159
181 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <string>
  3. #include <cstring>
  4. using namespace std;
  5. class Array {
  6. public:
  7.     Array(int len, int val = 0) : len(len), data(new int[len]) {
  8.         memset(data, val, len * sizeof(data[0]));
  9.     }
  10.     Array(const Array& a) : len(a.len), data(new int[len]) {
  11.         for (int i = 0; i < len; ++i) data[i] = a.data[i];
  12.     }
  13.     ~Array() {
  14.         if (data != nullptr) {
  15.             delete[] data;
  16.             data = nullptr;
  17.         }
  18.     }
  19.     int length()const {
  20.         return len;
  21.     }
  22.     void reverse() {
  23.         for (int i = 0, j = len - 1; i < j; ++i, --j) {
  24.             swap(data[i], data[j]);
  25.         }
  26.     }
  27.     const int& operator[](int i)const {
  28.         if (i < 0) i = len - abs(i) % len;
  29.         else i = i % len;
  30.         return data[i];
  31.     }
  32. private:
  33.     int len;
  34.     int* data;
  35.     friend ostream& operator<<(ostream& out, const Array& a) {
  36.         string line;
  37.         for (int i = 0; i < a.len; ++i) line += to_string(a.data[i]) + ' ';
  38.         line.pop_back();
  39.         return out << line;
  40.     }
  41.     friend istream& operator>>(istream& inp, Array& a) {
  42.         for (int i = 0; i < a.len; ++i) inp >> a.data[i];
  43.         return inp;
  44.     }
  45. };
  46. int main() {
  47.     int length;
  48.     cin >> length;
  49.     Array box(length);
  50.     cin >> box;
  51.     int count;
  52.     cin >> count;
  53.     Array indexes(count);
  54.     cin >> indexes;
  55.     string line;
  56.     for (int i = 0; i < count; ++i) {
  57.         line += to_string(box[indexes[i]]) + ' ';
  58.     }
  59.     line.pop_back();
  60.     cout << line << '\n';
  61. }
RAW Paste Data