Submission #523251

#TimeUsernameProblemLanguageResultExecution timeMemory
523251levsog2004Round words (IZhO13_rowords)C++14
0 / 100
33 ms32352 KiB
#include <iostream> #include <iomanip> #include <fstream> #include <algorithm> #include <cstring> #include <string> #include <vector> #include <queue> #include <deque> #include <stack> #include <cmath> #include <list> #include <set> #include <map> using namespace std; #define ll long long int #define forr(n) for(ll i=0;i<n;i++) #define um unordered_map<int,int> #define vec vector<int> #define vecl vector<ll> #define pb push_back #define bg begin() #define en end() int dp[2005][2005]; void solve() { string s, t; cin >> s >> t; int tt = s.size(); for (int i = 0; i < tt; ++i) { s.push_back(s[i]); } tt = t.size(); for (int i = 0; i < tt; ++i) { t.push_back(t[i]); } int ss = s.size(); tt = t.size(); memset(dp, 0, sizeof(dp)); for (int i = 1; i <= ss; i++) { for (int j = 1; j <= tt; j++) { if (s[i - 1] == t[j - 1]) dp[i][j] = 1 + dp[i - 1][j - 1]; else dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]); } } string ans; int i = ss, j = tt; while (i > 0 && j > 0) { if (s[i - 1] == t[j - 1]) { ans += s[i - 1]; i--; j--; } else { if (dp[i - 1][j] > dp[i][j - 1]) i--; else j--; } } reverse(ans.bg, ans.en); cout << ans << " "; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int t = 1; //cin>>t; while (t--) solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...