제출 #1118871

#제출 시각아이디문제언어결과실행 시간메모리
1118871hamzabc원형 문자열 (IZhO13_rowords)C++14
24 / 100
23 ms5968 KiB
#include <bits/stdc++.h> using namespace std; #define all(x) x.begin(), x.end() #define mod 1000000007 #define sp << " " << #define endl << '\n' int asz; int bsz; string a, b; vector<vector<int>> memoization; long long int dp(int sa, int sb){ if (sa == asz || sb == bsz) return 0; if (memoization[sa][sb] != -1) return memoization[sa][sb]; if (a[sa] == b[sb]) memoization[sa][sb] = dp(sa + 1, sb + 1) + 1; else memoization[sa][sb] = max(dp(sa, sb + 1), dp(sa + 1, sb)); return memoization[sa][sb]; } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> a >> b; asz = a.size(); bsz = b.size(); vector<int> lastseen('z' - 'a' + 1, -1); memoization.resize(a.size(), vector<int>(b.size(), -1)); for (int i = 0; i < asz; i++){ if (lastseen[a[i] - 'a'] == -1) lastseen[a[i] - 'a'] = i; } for (int i = 0; i < bsz; i++){ if (lastseen[b[i] - 'a'] != -1){ string aeski = a; a = ""; for (int o = 0; o < asz; o++) a += aeski[(lastseen[b[i] - 'a'] + o) % asz]; string beski = b; b = ""; for (int o = 0; o < bsz; o++) b += beski[(i + o) % bsz]; cout << dp(0, 0); return 0; } } cout << "0"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...