voidsolve(vector<int>& nums){ longlong pos_size = 0, pos_res = 0; for (int i = 0; i < nums.size(); ) { if (nums[i] < 0) { i++; continue; } int tmp = INT_MIN; pos_size++; for (; i < nums.size() && nums[i] > 0; i++) { tmp = max(tmp, nums[i]); } pos_res += tmp; tmp = INT_MIN; for (; i < nums.size() && nums[i] < 0; i++) { tmp = max(tmp, nums[i]); } if (tmp != INT_MIN) { pos_size++; pos_res += tmp; } }
longlong neg_size = 0, neg_res = 0; for (int i = 0; i < nums.size(); ) { if (nums[i] > 0) { i++; continue; } int tmp = INT_MIN; neg_size++; for (; i < nums.size() && nums[i] < 0; i++) { tmp = max(tmp, nums[i]); } neg_res += tmp; tmp = INT_MIN; for (; i < nums.size() && nums[i] > 0; i++) { tmp = max(tmp, nums[i]); } if (tmp != INT_MIN) { neg_size++; neg_res += tmp; } } if (pos_size > neg_size) { out << pos_res << endl; } elseif (pos_size < neg_size) { out << neg_res << endl; } else { out << max(pos_res, neg_res) << endl; }
}
intmain(){ int tc; in >> tc; for (int t = 1; t <= tc; t++) { int size; in >> size; vector<int> nums; for (int i = 0; i < size; i++) { int num; in >> num; nums.push_back(num); } solve(nums); } return0; }