E - Frequency AtCoder Regular Contest 069
最大の石を減らすには、石の数×高さの回数が必要になる
この操作をシミュレートする
自分と同じ高さの場所の数と二番目に高い物の位置が必要になる
pairに(石の高さ,インデックス)を持たせて降昇順にソートすると石の数と最小のインデックスがわかりやすい
Submission #4183499 - AtCoder Regular Contest 069
vi a, b, c; vp p; signed main() { cin >> n; addn(a, n); rep(i, n)p.eb(-a[i], i); p.eb(0ll, n); sort(p); int pi = 0; int ai = p[pi].se; vi res(k5); while (1) { int nh = -p[pi].first; int ti = lowerIndex(p, mp(p[pi].first, inf)); int th = -p[ti].fi; res[ai] += (nh - th) * ti; pi = ti; chmin(ai, p[pi].se); if (ti == n)break; } rep(i, n)cout << res[i] << endl; return 0; }