|
@@ -1,4 +1,5 @@
|
|
|
#include <algorithm>
|
|
|
+#include <cstdlib>
|
|
|
#include <iostream>
|
|
|
#include <vector>
|
|
|
|
|
@@ -6,6 +7,20 @@
|
|
|
|
|
|
using std::vector; using std::swap; using std::ostream;
|
|
|
|
|
|
+// 处理参数
|
|
|
+void read_arg(const int argc, char ***pargv, std::vector<int> &arr) {
|
|
|
+ char **argv = *pargv;
|
|
|
+ if (argc < 3)
|
|
|
+ throw std::invalid_argument("usage: ./run.exe [arr_size] [arr (split by space)]");
|
|
|
+ const size_t arr_size = strtoul(argv[1], NULL, 0);
|
|
|
+ if (arr_size + 2 != static_cast<size_t>(argc))
|
|
|
+ throw std::invalid_argument("arr_size dosen't fit");
|
|
|
+ int carr[arr_size];
|
|
|
+ for (size_t i = 0; i < arr_size; ++i)
|
|
|
+ carr[i] = strtol(argv[2 + i], NULL, 0);
|
|
|
+ arr = vector<int>(&carr[0], &carr[arr_size]);
|
|
|
+}
|
|
|
+
|
|
|
// 检查beg与end之间有无重复值
|
|
|
bool isdiff(vector<int> &arr, size_t beg, size_t end) {
|
|
|
for (size_t i = beg; i < end; ++i) {
|