Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
#include
#include
#include
#include
using namespace std; string a, b; int dp[3005][3005]; pair
backtrack[3005][3005]; char bukva[3005][3005]; int rek(int i, int j) { if(i < 0 or j < 0) { return 0; } if(dp[i][j] != -1) { return dp[i][j]; } int result = 0; int r1 = -10, r2 = 0, r3 = 0; if(a[i] == b[j]) { r1 = rek(i - 1, j - 1) + 1; } r2 = rek(i - 1, j); r3 = rek(i, j - 1); result = max(r1, max(r2, r3)); if(r3 == result) { backtrack[i][j] = make_pair(i, j - 1); bukva[i][j] = '.'; } else if(r2 == result) { backtrack[i][j] = make_pair(i - 1, j); bukva[i][j] = '.'; } else { backtrack[i][j] = make_pair(i - 1, j - 1); bukva[i][j] = a[i]; } dp[i][j] = result; return result; } int main() { ios_base::sync_with_stdio(false); cout.tie(0); cin.tie(0); cin >> a >> b; for(int i = 0; i < a.size(); i++) { for(int j = 0; j < b.size(); j++) { dp[i][j] = -1; } } if(rek((int) a.size() - 1, (int) b.size() - 1) == 0) { cout << "" << endl; return 0; } pair
p = make_pair(a.size() - 1, b.size() - 1); string s = ""; while(true) { if(p.first >= 0 and p.second >= 0) { s += bukva[p.first][p.second]; p = make_pair(backtrack[p.first][p.second].first, backtrack[p.first][p.second].second); } else { break; } } for(int i = (int) s.size() - 1; i >= 0; i--) { if(s[i] != '.') { cout << s[i]; } } return 0; }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)