Submission #1370628

#TimeUsernameProblemLanguageResultExecution timeMemory
1370628eradaxNecklace (Subtask 1-3) (BOI19_necklace1)C++20
0 / 85
161 ms452 KiB
#include<bits/stdc++.h>
using namespace std;

int main(){
    cin.tie(0)->sync_with_stdio(0);
    string a,b;cin>>a>>b;
    int n=ssize(a),m=ssize(b);

    array<int, 3> best{0,0,0};

    for(int i=0;i<n;i++)for(int j=0;j<m;j++){
        int l1=n;
        while(1){
            int f=1;
            for(int k=0;k<l1;k++)f&=a[(i-l1+k+n)%n]==b[(j+k+n)%n];
            if(f)break;
            l1--;
        }
        
        int l2=n-(i-l1);
        while(1){
            int f=1;
            for(int k=0;k<l2;k++)f&=a[i+k]==b[j-l2+k];
            if(f)break;
            l2--;
        }

        best=max(best,{l1+l2,i-l1,j-l2});
    }
    reverse(begin(b),end(b));
    for(int i=0;i<n;i++)for(int j=0;j<m;j++){
        int l1=min(i,n-j);
        while(1){
            int f=1;
            for(int k=0;k<l1;k++)f&=a[i-l1+k]==b[j+k];
            if(f)break;
            l1--;
        }
        
        int l2=min(n-i,j);
        while(1){
            int f=1;
            for(int k=0;k<l2;k++)f&=a[i+k]==b[j-l2+k];
            if(f)break;
            l2--;
        }

        best=max(best,{l1+l2,i-l1,n-1-(j-l2)});
    }
    cout<<best[0]<<'\n';
    cout<<best[1]<<' '<<best[2]<<'\n';
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...