Advertisement
mickypinata

SMMR-T108: Magic Spell II

May 26th, 2020
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.84 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string.h>
  4. using namespace std;
  5.  
  6. int len1, len2;
  7. char m1[2010], m2[2010];
  8.  
  9. int main(){
  10.  
  11.     int ans, mx;
  12.  
  13.     scanf(" %s", m1);
  14.     len1 = strlen(m1);
  15.     scanf(" %s", m2);
  16.     len2 = strlen(m2);
  17.  
  18.     mx = 0;
  19.     vector<vector<int>> memo(len1 + 1, vector<int>(len2 + 1));
  20.     for(int ia = 0; ia < len1; ++ia){
  21.         for(int ib = 0; ib < len2; ++ib){
  22.             if(m1[ia] == m2[ib]){
  23.                 memo[ia + 1][ib + 1] = memo[ia][ib] + 1;
  24.                 if(memo[ia + 1][ib + 1] > mx){
  25.                     mx = memo[ia + 1][ib + 1];
  26.                     ans = ia;
  27.                 }
  28.             } else {
  29.                 memo[ia + 1][ib + 1] = 0;
  30.             }
  31.         }
  32.     }
  33.  
  34.     for(int i = ans - mx + 1; i <= ans; ++i){
  35.         cout << m1[i];
  36.     }
  37.  
  38.     return 0;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement