解説動画
実装の方針
- 空のvectorを準備
- ボールをvectorの末尾に追加していく.
- 配列の末尾と末尾から1個前の要素が等しいかどうかを比較(vectorのサイズが2以上の場合)
- 等しかった場合
- vector末尾を削除して、(削除した後のvectorの)末尾の数値を+1する
- 等しかった場合
コード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define rep(i, n) for (int i = 0; i < (n); ++i)
int main() {
int n;
cin >> n;
vector vec;
rep(i, n) {
int a;
cin >> a;
vec.push_back(a);
while (vec.size() >= 2 && vec[vec.size() - 1] == vec[vec.size() - 2]) {
vec.pop_back();
vec.back()++;
}
}
cout << vec.size() << endl;
return 0;
}
コメント