以下の内容はhttps://blog.hamayanhamayan.com/entry/2019/11/22/234256より取得しました。


よくあるボールを移動するやつ [yukicoder 929]

https://yukicoder.me/problems/no/929

解説

https://yukicoder.me/submissions/400103

なんとなく貪欲でやれば良さそうな気がする。
先頭からなければ前から持ってくるか、後ろから持ってくるかすればいい。
これはボールに最初にある場所の添字を付けて、昇順ソートしたときの位置が最適な位置になるので、
添字とボールに付いている添字との差を取っていけば答え。

int N;
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> N;
    vector<int> idx;
    rep(i, 1, N + 1) {
        int B; cin >> B;
        rep(j, 0, B) idx.push_back(i);
    }

    ll ans = 0;
    rep(i, 0, N) ans += abs(idx[i] - (i + 1));
    cout << ans << endl;
}



以上の内容はhttps://blog.hamayanhamayan.com/entry/2019/11/22/234256より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14