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: