とりあえず条件の通りに実装して終わり。
"どうせこんな感じだろう"で通してしまった。
正答率を見て問題を選んでいることを後悔した。
他の解法もあるそうなので考えてみよう。
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; }