diff options
author | Jack Sangdahl <[email protected]> | 2025-02-13 15:10:58 -0700 |
---|---|---|
committer | Jack Sangdahl <[email protected]> | 2025-02-13 15:10:58 -0700 |
commit | 146f58d5d91133e43045df719b3f0ae7ad1266f0 (patch) | |
tree | b82764947719cd159cecfa056c9a6a1a80f6b6fa | |
parent | 3331ee948ededea78a774eb53facec06035af4c8 (diff) | |
download | cses-146f58d5d91133e43045df719b3f0ae7ad1266f0.tar.gz cses-146f58d5d91133e43045df719b3f0ae7ad1266f0.zip |
1092. two sets
-rw-r--r-- | introductory_problems/readme.md | 7 | ||||
-rw-r--r-- | introductory_problems/two_sets.cpp | 27 |
2 files changed, 34 insertions, 0 deletions
diff --git a/introductory_problems/readme.md b/introductory_problems/readme.md index 0b39d4d..9607312 100644 --- a/introductory_problems/readme.md +++ b/introductory_problems/readme.md @@ -48,3 +48,10 @@ Your task is to count for `k = 1, 2, ..., n` the number of ways two knights can **Input**: The only input line contains an integer `n`. (Example: 8) **Output**: Print `n` integers: the results. (Example: 0 6 28 96 252 550 1056 1848) + +### Two Sets +Your task is to divide the numbers `1, 2, ..., n` into two sets of equal sum. + +**Input**: The only input line contains an integer `n`. (Example: 7) + +**Output**: Print "YES", if the division is possible, and "NO" otherwise. After this, print if the division is possible, print an example of how to create the sets. diff --git a/introductory_problems/two_sets.cpp b/introductory_problems/two_sets.cpp new file mode 100644 index 0000000..ce13e0c --- /dev/null +++ b/introductory_problems/two_sets.cpp @@ -0,0 +1,27 @@ +// 1092. Two Sets +#include <bits/stdc++.h> +using namespace std; + +int main() { + static int n; + scanf("%d", &n); + if (n % 4 == 1 || n % 4 == 2) + printf("NO\n"); + else if (n % 4 == 3) { + printf("YES\n"); + printf("%d\n", n / 2); + for (int i = 2; i <= n / 2; i += 2) + printf("%d %d ", i, n - i); + printf("%d\n%d\n", n, n / 2 + 1); + for (int i = 1; i <= n / 2; i += 2) + printf("%d %d ", i, n - i); + } else { + printf("YES\n"); + printf("%d\n", n / 2); + for (int i = 2; i <= n / 2; i += 2) + printf("%d %d ", i, n - i + 1); + printf("\n%d\n", n / 2); + for (int i = 1; i <= n / 2; i += 2) + printf("%d %d ", i, n - i + 1); + } +} |