Official

A - 好きな順列 Editorial by chokudai


k回目の提出では、k番目の要素が20、それ以外の 要素を1にして提出します。すると、全ての要素が1だった場合と比べて、k番目の要素が大きければ大きいほど点数が高くなり、小さければ小さいほど点数が低くなります。

以下のようなプログラムを、X=1, 2, 3, 4… 20と順番に提出しましょう。

int main()
{
    int X = 1;
    for(int i = 0; i < 20; i++){
        if(i + 1 == X) cout << 20 << endl;
        else cout << 1 << endl;
    }
}

次に、提出を点数が低い順に並び替えると、K番目に点数に低い提出に書かれたXが、Kの入るべき場所であるということが分かります。

よって、21回目の提出で、1000点を獲得することが出来ます。

なお、もう少しきちんと計算すると、全て1との答えの差分から、1つ1つの値を計算することができ、順列であるため最後の値は自動的に求まるため、19回の提出でAを特定することも出来ます。

posted:
last update: