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 <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
long long p[1510][1510], q[1510][1510];
hash<string> h;
vector<pair<long long, int>> v;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    string a, b;
    int ans = 0;
    cin>>a>>b;
    for(int i=0; i<a.size(); i++) {
        p[i][i] = h.operator()(string(1, a[i]));
        v.push_back({p[i][i], 1});
    }
    for(int i=1; i<a.size(); i++) {
        for(int j=0; j<a.size()-i; j++) {
            p[j][i+j] = p[j][i+j-1] + p[i+j][i+j];
            v.push_back({p[j][i+j], i+1});
        }
    }
    sort(v.begin(), v.end());
    for(int i=0; i<b.size(); i++) {
        q[i][i] = h.operator()(string(1, b[i]));
        if(binary_search(v.begin(), v.end(), make_pair(q[i][i], 1))) {
            ans = max(ans, 1);
        }
    }
    for(int i=1; i<b.size(); i++) {
        for(int j=0; j<b.size()-i; j++) {
            q[j][i+j] = q[j][i+j-1] + q[i+j][i+j];
            if(binary_search(v.begin(), v.end(), make_pair(q[j][i+j], i+1))) {
                ans = max(ans, i+1);
            }
        }
    }
    cout << ans;
}
Compilation message (stderr)
interval.cpp: In function 'int main()':
interval.cpp:17:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0; i<a.size(); i++) {
                  ~^~~~~~~~~
interval.cpp:21:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=1; i<a.size(); i++) {
                  ~^~~~~~~~~
interval.cpp:22:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int j=0; j<a.size()-i; j++) {
                      ~^~~~~~~~~~~
interval.cpp:28:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0; i<b.size(); i++) {
                  ~^~~~~~~~~
interval.cpp:34:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=1; i<b.size(); i++) {
                  ~^~~~~~~~~
interval.cpp:35:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int j=0; j<b.size()-i; j++) {
                      ~^~~~~~~~~~~| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |