diff --git a/.gitignore b/.gitignore index adb36c8..9045521 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -*.exe \ No newline at end of file +*.exe +.idea +cmake* \ No newline at end of file diff --git a/.vscode/c.code-snippets b/.vscode/c.code-snippets index 3af9204..0746260 100644 --- a/.vscode/c.code-snippets +++ b/.vscode/c.code-snippets @@ -81,11 +81,6 @@ "body": ["#define min(i, j) (((i) < (j)) ? (i) : (j))"], "description": "Define function min" }, - "Fake loop": { - "prefix": "fake_loop", - "body": ["while (0) { /* Fake loop */", "}"], - "description": "Fake loop" - }, "Define Boolean": { "prefix": "define_boolean", "body": ["#define bool int", "#define true 1", "#define false 0"], diff --git a/.vscode/c.fake.code-snippets b/.vscode/c.fake.code-snippets new file mode 100644 index 0000000..91b0d7b --- /dev/null +++ b/.vscode/c.fake.code-snippets @@ -0,0 +1,12 @@ +{ + "Fake loop": { + "prefix": "fake_loop", + "body": ["while (0) { /* Fake loop */", "}"], + "description": "Fake loop" + }, + "Fake array": { + "prefix": "fake_array", + "body": ["if (0) { /* Fake array */", " int a[1];", "}"], + "description": "Fake array" + } +} diff --git a/.vscode/c.template.code-snippets b/.vscode/c.template.code-snippets new file mode 100644 index 0000000..58c2bda --- /dev/null +++ b/.vscode/c.template.code-snippets @@ -0,0 +1,51 @@ +{ + "Define template": { + "prefix": "define_template", + "body": [ + "#define _template_func_def(T, func) T_DEFINE_##func(T)", + "#define _template_func(T, func) T_##func##__##T" + ], + "description": "Define template" + }, + "Define sort": { + "prefix": "define_sort", + "body": [ + "#define SORT_PREDICATE(type, name) bool name(type a, type b)", + "#define SORT_SWAP(type, a, b) \\", + " { \\", + " const type _BLOCK_T = a; \\", + " a = b; \\", + " b = _BLOCK_T; \\", + " }", + "", + "#define T_DEFINE_less(T) \\", + " SORT_PREDICATE(T, T_less__##T) { return a < b; }", + "#define T_DEFINE_greater(T) \\", + " SORT_PREDICATE(T, T_greater__##T) { return a > b; }", + "", + "#define T_DEFINE_sort(T) \\", + " void T_sort__##T(T *start, const T *end, bool (*predicate)(T, T)) { \\", + " T *i, *j; \\", + " for (i = start; i < end; i++) { \\", + " for (j = i; j < end; j++) { \\", + " if (predicate(*i, *j)) { \\", + " SORT_SWAP(T, *i, *j); \\", + " } \\", + " } \\", + " } \\", + " }", + "", + "#define T_DEFINE_sort_default(T) \\", + " void T_sort_default__##T(T *start, const T *end) { \\", + " T_sort__##T(start, end, _template_func(T, less)); \\", + " }", + "", + "#define T_DEFINE_sort_init(T) \\", + " _template_func_def(T, less); \\", + " _template_func_def(T, greater); \\", + " _template_func_def(T, sort); \\", + " _template_func_def(T, sort_default);" + ], + "description": "Define sort" + } +} diff --git a/0325/1.c b/0325/1.c new file mode 100644 index 0000000..c7f7c87 --- /dev/null +++ b/0325/1.c @@ -0,0 +1,31 @@ +#include +#define for_i(i, range, inner) \ + { \ + int i; \ + for (i = 0; i < range; i++) \ + inner; \ + } +#define N 12 + +int sum(int a[], int n) { + int s = 0; + int i = n; + for (; i < n + 5; i++) { + s += a[i % N]; + } + return s; +} + +int main() { + int a[12], max_sum = 0, max_i = 0; + for_i(i, N, scanf("%d", &a[i])); + for_i(i, N, { + int s = sum(a, i); + if (s > max_sum) { + max_sum = s; + max_i = i; + } + }); + printf("%d\n", max_i + 1); + return 0; +} \ No newline at end of file diff --git a/0325/2.c b/0325/2.c new file mode 100644 index 0000000..713a3d6 --- /dev/null +++ b/0325/2.c @@ -0,0 +1,16 @@ +#include +#define for_i(i, range, inner) \ + { \ + int i; \ + for (i = 0; i < range; i++) \ + inner; \ + } + +int main() { + int a[10], height, count = 0; + for_i(i, 10, scanf("%d", &a[i])); + scanf("%d", &height); + for_i(i, 10, if (a[i] <= height + 30) count++); + printf("%d", count); + return 0; +} \ No newline at end of file diff --git a/0325/3.c b/0325/3.c new file mode 100644 index 0000000..b43f00f --- /dev/null +++ b/0325/3.c @@ -0,0 +1,33 @@ +#include +#define bool int +#define true 1 +#define false 0 + +int main() { + int n = 0, length = 0; + bool in_word = false; + char c; + while ((c = getchar()) != '\n') { + if (c == ' ') { + if (in_word) { + in_word = false; + } + continue; + } else { + if (!in_word) { + in_word = true; + n++; + } + } + length++; + } + if (n) { + printf("%.2f", (float)length / n); + } else { + printf("0.00"); + } + if (0) { /* Fake array */ + int a[1]; + } + return 0; +} \ No newline at end of file diff --git a/0325/4.c b/0325/4.c new file mode 100644 index 0000000..01e9fb9 --- /dev/null +++ b/0325/4.c @@ -0,0 +1,54 @@ +#include +#define for_i(i, range, inner) \ + { \ + int i; \ + for (i = 0; i < range; i++) \ + inner; \ + } +#define putbool(x) (printf("%s\n", (x) ? "yes" : "no")) +#define bool int +#define true 1 +#define false 0 + +int main() { + int n; + scanf("%d\n", &n); + for_i(i, n, { + char a[1000]; + int p = -1; + char c; + bool flag = 1; + while ((c = getchar()) != '\n') { + if (!flag) { + continue; + } + switch (c) { + case '(': + case '[': + a[++p] = c; + break; + case ')': + case ']': + if (p < 0) { + putbool(false); + flag = 0; + break; + } + if (c == ')' && a[p] == '(' || c == ']' && a[p] == '[') { + p--; + } else { + putbool(false); + flag = 0; + break; + } + break; + default: + break; + } + } + if (flag) { + putbool(p < 0); + } + }); + return 0; +} \ No newline at end of file diff --git a/0325/5.c b/0325/5.c new file mode 100644 index 0000000..7cea0bf --- /dev/null +++ b/0325/5.c @@ -0,0 +1,27 @@ +#include +#define for_i(i, range, inner) \ + { \ + int i; \ + for (i = 0; i < range; i++) \ + inner; \ + } +#define for_wrapper(a, b, c, d) \ + { \ + a; \ + for (; b; c) \ + d; \ + } + +int main() { + int n, a[1000] = {0}; + int sum = 0; + scanf("%d", &n); + for_wrapper(int i = 1, i <= n, i++, { + for_wrapper(int j = i - 1, j < n, j += i, { + a[j] = !a[j]; + }); + }); + for_i(i, n, sum += a[i]); + printf("%d", sum); + return 0; +} \ No newline at end of file diff --git a/0325/6.c b/0325/6.c new file mode 100644 index 0000000..5477031 --- /dev/null +++ b/0325/6.c @@ -0,0 +1,21 @@ +#include +#define bool int +#define true 1 +#define false 0 + +int main() { + char c; + bool is_odd; + while ((c = getchar()) != '\n') { + if (c == '1') { + is_odd = true; + } else { + is_odd = false; + } + } + printf("%s", is_odd ? "ODD" : "EVEN"); + if (0) { /* Fake array */ + int a[1]; + } + return 0; +} \ No newline at end of file diff --git a/0325/7.c b/0325/7.c new file mode 100644 index 0000000..b072fa1 --- /dev/null +++ b/0325/7.c @@ -0,0 +1,30 @@ +#include +#define bool int +#define true 1 +#define false 0 + +#define case_do(c, to) \ + case c: \ + printf(to); \ + break; + +int main() { + char c; + while ((c = getchar()) != '\n') { + switch (c) { + case_do('O', "0"); + case_do('l', "1"); + case_do('Z', "2"); + case_do('S', "5"); + case_do('b', "6"); + case_do('B', "8"); + case_do('q', "9"); + default: + printf("%c", c); + } + } + if (0) { /* Fake array */ + int a[1]; + } + return 0; +} \ No newline at end of file diff --git a/0325/8.c b/0325/8.c new file mode 100644 index 0000000..0679a99 --- /dev/null +++ b/0325/8.c @@ -0,0 +1,34 @@ +#include +#define for_i(i, range, inner) \ + { \ + int i; \ + for (i = 0; i < range; i++) \ + inner; \ + } + +int main() { + int n, a[101] = {0}; + int max = 0; + int out[101]; + int p = 0; + scanf("%d", &n); + for_i(i, n, { + int x; + scanf("%d", &x); + a[x]++; + }); + + for_i(i, 101, { + if (a[i] > max) { + max = a[i]; + p = 0; + out[p++] = i; + } else if (a[i] == max) { + out[p++] = i; + } + }); + + for_i(i, p, { printf("%d ", out[i]); }); + + return 0; +} \ No newline at end of file diff --git a/0325/9.c b/0325/9.c new file mode 100644 index 0000000..301783d --- /dev/null +++ b/0325/9.c @@ -0,0 +1,62 @@ +#define bool int +#define true 1 +#define false 0 + +#define _template_func_def(T, func) T_DEFINE_##func(T) +#define _template_func(T, func) T_##func##__##T + +#define SORT_PREDICATE(type, name) bool name(type a, type b) +#define SORT_SWAP(type, a, b) \ + { \ + const type _BLOCK_T = a; \ + a = b; \ + b = _BLOCK_T; \ + } + +#define T_DEFINE_less(T) \ + SORT_PREDICATE(T, T_less__##T) { return a < b; } +#define T_DEFINE_greater(T) \ + SORT_PREDICATE(T, T_greater__##T) { return a > b; } + +#define T_DEFINE_sort(T) \ + void T_sort__##T(T *start, const T *end, bool (*predicate)(T, T)) { \ + T *i, *j; \ + for (i = start; i < end; i++) { \ + for (j = i; j < end; j++) { \ + if (predicate(*i, *j)) { \ + SORT_SWAP(T, *i, *j); \ + } \ + } \ + } \ + } + +#define T_DEFINE_sort_default(T) \ + void T_sort_default__##T(T *start, const T *end) { \ + T_sort__##T(start, end, _template_func(T, less)); \ + } + +#define T_DEFINE_sort_init(T) \ + _template_func_def(T, less); \ + _template_func_def(T, greater); \ + _template_func_def(T, sort); \ + _template_func_def(T, sort_default); + +#define for_i(i, range, inner) \ + { \ + int i; \ + for (i = 0; i < range; i++) \ + inner; \ + } + +T_DEFINE_sort_init(int); + +#include + +int main() { + int n, a[301] = {0}; + scanf("%d", &n); + for_i(i, n, scanf("%d", a + i)); + _template_func(int, sort)(a, a + n, _template_func(int, greater)); + for_i(i, n, printf("%d ", a[i])); + return 0; +} \ No newline at end of file