Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iomanip>
- #include <cstdint>
- #include <algorithm>
- #include <string>
- #include <cassert>
- #include "vector.h"
- void Info(const MyVector &vector) {
- std::cout << vector.Sum() << ' '
- << std::setprecision(4) << std::fixed
- << vector.Mean() << ' '
- << vector.Min() << ' '
- << vector.Max() << '\n';
- }
- void CopyReverse(MyVector v) {
- std::reverse(v.Begin(), v.End());
- std::cout << v << '\n';
- }
- void CheckSlice(MyVector v) {
- (*v(0, 0).Begin()) = 6;
- assert(v[0] == 6);
- }
- int main() {
- int n, m;
- std::cin >> n >> m;
- MyVector vec(n);
- std::cin >> vec;
- static_assert(sizeof(vec(0, 0)) <= 16);
- CopyReverse(vec);
- int x = vec[0];
- CheckSlice(vec);
- assert(vec[0] == x);
- std::string cmd;
- while (m--) {
- std::cin >> cmd;
- if (cmd == "add") {
- size_t index;
- int32_t x;
- std::cin >> index >> x;
- if (index != 0) {
- vec.Insert(x, vec.Begin() + index - 1);
- } else {
- vec.PushBack(x);
- }
- } else if (cmd == "remove") {
- size_t index;
- std::cin >> index;
- if (index != 0) {
- vec.Erase(vec.Begin() + index - 1);
- } else {
- vec.PopBack();
- }
- } else if (cmd == "get") {
- ssize_t index; std::cin >> index;
- std::cout << vec[index] << '\n';
- } else if (cmd == "subget") {
- ssize_t l, r; std::cin >> l >> r;
- std::cout << vec(l, r) << '\n';
- } else if (cmd == "concat") {
- size_t m; std::cin >> m;
- MyVector other(m);
- std::cin >> other;
- vec ^= other;
- } else if (cmd == "info") {
- Info(vec);
- }
- #ifdef DEBUG
- std::cout << vec << '\n';
- #endif
- }
- std::cout << vec << '\n';
- }
Advertisement
Add Comment
Please, Sign In to add comment