// STACKS // Stacks // // Author: Kanstantsin Sokal // Complexity: O(N log N) per test case // // Expected verdict: AC #include #include #include #include using namespace std; vector stacks; void solve_one_case() { stacks.clear(); int n; scanf("%d", &n); for (int i = 0; i < n; i++) { int radius; scanf("%d", &radius); auto it = upper_bound(stacks.begin(), stacks.end(), radius); if (it == stacks.end()) { stacks.push_back(radius); } else { (*it) = radius; } } printf("%d ", (int)stacks.size()); for (const int &radius : stacks) { printf("%d ", radius); } printf("\n"); } int main() { int cases; scanf("%d", &cases); for (int i = 0; i < cases; i++) { solve_one_case(); } }