Official

D - Social Distance 3 Editorial by keisuke6


\(K\leq {N - \lfloor \frac{N}{3} \rfloor} \) の場合、条件を満たす \(i\) が存在しないよう構築することができます。これは、 \(x \not\equiv 0\pmod{3}\) を満たす正整数 \(x\) のうち、小さいほうから \(K\) 番目までの椅子に人を座らせることで実現できます。

\(K \gt {N - \lfloor \frac{N}{3} \rfloor} \) の場合は、逆に \(N\) この椅子に全員が座った状態から \(N-K\) 人を減らす方針で考えます。このときは、 \(x \equiv 0\pmod{3}\) のうち小さいほうから \(N-K\) 番目までを空席にさせればよいです。

それぞれを実装することで正答を得ることができます。

実装例 (C++)

#include <bits/stdc++.h>
using namespace std;

int main() {
    int N, K;
    cin >> N >> K;
    if(K <= N - N / 3) {
        for(int i = 1; i <= N; i++) {
            if(K != 0 && i % 3 != 0) {
                cout << i << ' ';
                K--;
            }
        }
        cout << endl;
    }
    else {
        K -= N - N / 3;
        for(int i = N; i >= 1; i--) {
            if(i % 3 != 0 || (K != 0 && i % 3 == 0)) {
                cout << i << ' ';
                if(i % 3 == 0) K--;
            }
        }
        cout << endl;
    }
}

posted:
last update: