# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
47539 | ngkan146 | 원형 문자열 (IZhO13_rowords) | C++11 | 60 ms | 32888 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
string t[2], s[2];
int dp[4005][4005];
int main(){
cin >> s[0] >> s[1];
s[0] = '0' + s[0];
s[1] = '0' + s[1];
for(int i=1;i<s[0].size();i++){
for(int j=1;j<s[1].size();j++){
dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
if (s[0][i] == s[1][j])
dp[i][j] = max(dp[i][j], dp[i-1][j-1] + 1);
}
}
int tmp = dp[s[0].size()-1][s[1].size()-1];
s[0].erase(s[0].begin());
s[1].erase(s[1].begin());
s[0] = '0' + s[0];
s[1] = '0' + s[1];
s[0] += s[0];
s[1] += s[1];
//cerr << s[0] << '\n' << s[1] << '\n';
for(int i=1;i<s[0].size();i++){
for(int j=1;j<s[1].size();j++){
dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
if (s[0][i] == s[1][j])
dp[i][j] = max(dp[i][j], dp[i-1][j-1] + 1);
}
}
cout << dp[s[0].size()-1][s[1].size()-1] - tmp;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |