voidsolve(vector<int>& nums, int size){ vector<int> peaks; for (int i = 1; i < nums.size() - 1; i++) { if (nums[i] > nums[i - 1] && nums[i] > nums[i + 1]) { peaks.push_back(nums[i]); } if (nums[i] < nums[i - 1] && nums[i] < nums[i + 1]) { peaks.push_back(nums[i]); } } out << 2 + peaks.size() << endl; out << nums[0] << " "; peaks.push_back(nums[size - 1]); for (int i = 0; i < peaks.size(); i++) { out << peaks[i] << " "; } out << endl; }
intmain(){ int tc; in >> tc; for (int i = 0; i < tc; i++) { int size; in >> size; vector<int> nums; for (int i = 0; i < size; i++) { int num; in >> num; nums.push_back(num); } solve(nums, size); } return0; }