stack<int> s; for (int a : A) { int x = 1 << a; if (!s.empty() && s.top() == x) { s.pop(); if (!s.empty()) { s.top() += x; } else { s.push(x); } } else { s.push(x); } } return s.size();