diff --git a/OnlineJudges/lydsy/1789.cpp b/OnlineJudges/lydsy/1789.cpp new file mode 100644 index 0000000..f943ad3 --- /dev/null +++ b/OnlineJudges/lydsy/1789.cpp @@ -0,0 +1,19 @@ +#include +inline int min(int a, int b) { return a < b ? a : b; } +int l[3], lcp, ans, sum; +char s[3][60]; +int main() +{ + scanf("%d%s%d%s%d%s", &l[0], s[0], &l[1], s[1], &l[2], s[2]); + ans = sum = l[0] + l[1] + l[2]; + while (lcp < min(l[0], min(l[1], l[2])) && s[0][lcp] == s[1][lcp] && s[1][lcp] == s[2][lcp]) lcp++; + for (int i = 0; i < 3; i++) + for (int j = i + 1; j < 3; j++) + { + int lcp2 = lcp; + while (lcp2 < min(l[i], l[j]) && s[i][lcp2] == s[j][lcp2]) lcp2++; + ans = min(ans, (l[i] - lcp2) + (l[j] - lcp2) + (sum - l[i] - l[j] - lcp) + (lcp2 - lcp)); + } + printf("%d", ans); + return 0; +} \ No newline at end of file diff --git a/OnlineJudges/lydsy/1830.cpp b/OnlineJudges/lydsy/1830.cpp new file mode 100644 index 0000000..f943ad3 --- /dev/null +++ b/OnlineJudges/lydsy/1830.cpp @@ -0,0 +1,19 @@ +#include +inline int min(int a, int b) { return a < b ? a : b; } +int l[3], lcp, ans, sum; +char s[3][60]; +int main() +{ + scanf("%d%s%d%s%d%s", &l[0], s[0], &l[1], s[1], &l[2], s[2]); + ans = sum = l[0] + l[1] + l[2]; + while (lcp < min(l[0], min(l[1], l[2])) && s[0][lcp] == s[1][lcp] && s[1][lcp] == s[2][lcp]) lcp++; + for (int i = 0; i < 3; i++) + for (int j = i + 1; j < 3; j++) + { + int lcp2 = lcp; + while (lcp2 < min(l[i], l[j]) && s[i][lcp2] == s[j][lcp2]) lcp2++; + ans = min(ans, (l[i] - lcp2) + (l[j] - lcp2) + (sum - l[i] - l[j] - lcp) + (lcp2 - lcp)); + } + printf("%d", ans); + return 0; +} \ No newline at end of file