Advertisement
_Bad_Liar_

Untitled

Dec 15th, 2019
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. #include <iostream>
  2. #include<vector>
  3. using namespace std;
  4.  
  5. int main() {
  6.     string str;
  7.     cin >> str;
  8.     int n = str.length();
  9.     vector <vector <string>> new_str(n, vector<string>(n));
  10.     for (int len = 1; len <= n; len++) {
  11.         int r;
  12.         for (int l = 0; l + len - 1 < n; l++) {
  13.             r = l + len - 1;
  14.             string min = str.substr(l, len);
  15.                 for (int r1 = l; r1 < r; r1++){
  16.                     int l2 = r1+1;
  17.                     string tmp = new_str[l][r1] + new_str[l2][r];
  18.                     if (tmp.size() < min.size())
  19.                         min = tmp;
  20.                 }
  21.             for (int k = 1; k < len; k++) {
  22.                 if (len % k == 0) {
  23.                     bool period = true;
  24.                     if (str.substr(l, len - k) != str.substr(l + k, len - k ))
  25.                         period = false;
  26.                     if (period) {
  27.                         string tmp = to_string(len/k) + "(" + new_str[l][l+k-1] + ")";
  28.                         if (tmp.size() < min.size())
  29.                             min = tmp;
  30.                     }  
  31.                 }
  32.             }
  33.  
  34.         new_str[l][r] = min;
  35.         }
  36.     }
  37.     cout << new_str[0][n - 1];
  38.     return 0;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement