Submission #25337352
Source Code Expand
#include <bits/stdc++.h>
#define REP(i, n) for (int i = 0; (i) < (int)(n); ++(i))
#define REP3(i, m, n) for (int i = (m); (i) < (int)(n); ++(i))
#define REP_R(i, n) for (int i = (int)(n)-1; (i) >= 0; --(i))
#define REP3R(i, m, n) for (int i = (int)(n)-1; (i) >= (int)(m); --(i))
#define ALL(x) ::std::begin(x), ::std::end(x)
using namespace std;
int sim(char x, char y) {
if (x == '-') return -5;
if (y == '-') return -5;
return x == y ? 1 : -3;
}
constexpr int INF = 1e9;
std::pair<std::string, std::string> solve(const std::string &s, const std::string &t) {
int n = s.length();
int m = t.length();
vector<vector<int>> dp(n + 1, vector<int>(m + 1, -INF));
vector<vector<pair<int, int>>> link(n + 1, vector<pair<int, int>>(m + 1, make_pair(-1, -1)));
auto use = [&](int i, int j, int value, int prev_i, int prev_j) {
if (dp[i][j] < value) {
dp[i][j] = value;
link[i][j] = make_pair(prev_i, prev_j);
}
};
dp[0][0] = 0;
REP (i, n + 1) {
REP (j, m + 1) {
if (i < n and j < m) {
use(i + 1, j + 1, dp[i][j] + sim(s[i], t[j]), i, j);
}
if (i < n) {
use(i + 1, j, dp[i][j] + sim(s[i], '-'), i, j);
}
if (j < m) {
use(i, j + 1, dp[i][j] + sim('-', t[j]), i, j);
}
}
}
string ss;
string tt;
for (int i = n, j = m; ; ) {
auto [prev_i, prev_j] = link[i][j];
if (prev_i == -1) {
break;
}
ss.push_back(i == prev_i ? '-' : s.at(prev_i));
tt.push_back(j == prev_j ? '-' : t.at(prev_j));
i = prev_i;
j = prev_j;
}
reverse(ALL(ss));
reverse(ALL(tt));
return make_pair(ss, tt);
}
// generated by oj-template v4.8.0 (https://github.com/online-judge-tools/template-generator)
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
std::string s, t;
std::cin >> s >> t;
auto [c, d] = solve(s, t);
std::cout << c << '\n' << d << '\n';
return 0;
}
Submission Info
| Submission Time |
|
| Task |
B - Practice 2 |
| User |
kimiyuki |
| Language |
C++ (GCC 9.2.1) |
| Score |
500 |
| Code Size |
2093 Byte |
| Status |
AC |
| Exec Time |
9 ms |
| Memory |
4956 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
500 / 500 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
sample01.txt |
| All |
sample01.txt, in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, sample01.txt |
| Case Name |
Status |
Exec Time |
Memory |
| in01.txt |
AC |
9 ms |
3924 KiB |
| in02.txt |
AC |
6 ms |
4668 KiB |
| in03.txt |
AC |
2 ms |
3688 KiB |
| in04.txt |
AC |
3 ms |
3800 KiB |
| in05.txt |
AC |
2 ms |
3512 KiB |
| in06.txt |
AC |
4 ms |
3900 KiB |
| in07.txt |
AC |
2 ms |
3744 KiB |
| in08.txt |
AC |
4 ms |
4216 KiB |
| in09.txt |
AC |
2 ms |
3536 KiB |
| in10.txt |
AC |
2 ms |
3468 KiB |
| in11.txt |
AC |
2 ms |
3584 KiB |
| in12.txt |
AC |
8 ms |
4956 KiB |
| in13.txt |
AC |
2 ms |
3748 KiB |
| in14.txt |
AC |
3 ms |
3896 KiB |
| in15.txt |
AC |
2 ms |
3548 KiB |
| in16.txt |
AC |
2 ms |
3604 KiB |
| in17.txt |
AC |
2 ms |
3868 KiB |
| in18.txt |
AC |
2 ms |
3564 KiB |
| in19.txt |
AC |
2 ms |
3552 KiB |
| in20.txt |
AC |
1 ms |
3632 KiB |
| sample01.txt |
AC |
2 ms |
3412 KiB |