とりあえず条件の通りに実装して終わり。
"どうせこんな感じだろう"で通してしまった。
正答率を見て問題を選んでいることを後悔した。
他の解法もあるそうなので考えてみよう。
- class ConvexSequence {
- public:
- long long getMinimum(vector <int> a)
- {
- const int N = a.size();
- lli ret = 0;
- while (true) {
- lli tmp = ret;
- for (int i = 1; i < N - 1; ++i) {
- int b = min(a[i], (a[i - 1] + a[i + 1]) / 2);
- ret += abs(a[i] - b);
- a[i] = b;
- }
- if (tmp == ret) break;
- }
- return ret;
- }