Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- using lli = long long;
- const int N = 2e3 + 10;
- const lli PB = 98765431;
- const int AZ = 26 + 10;
- char A[N], B[N];
- lli cons[AZ];
- int la, lb;
- int alph(int ch){
- return ch - 'A' + 1;
- /// A, ..., Z = 1, ..., 26
- }
- bool check(int len){
- unordered_set <lli> HSHA;
- lli hshA = 0;
- for(int i=0;i<len-1;i++)
- hshA += cons[alph(A[i])];
- for(int i=len-1;i<la;i++){
- hshA += cons[alph(A[i])];
- HSHA.insert(hshA);
- hshA -= cons[alph(A[i-len+1])];
- }
- lli hshB = 0;
- for(int i=0;i<len-1;i++)
- hshB += cons[alph(B[i])];
- for(int i=len-1;i<lb;i++){
- hshB += cons[alph(B[i])];
- if(HSHA.find(hshB) != HSHA.end()) return true;
- hshB -= cons[alph(B[i-len+1])];
- }
- return false;
- }
- int main(){
- scanf("%s%s", &A, &B);
- la = strlen(A);
- lb = strlen(B);
- cons[0] = 1;
- for(int i=1;i<=AZ-10;i++){
- cons[i] = (lli) cons[i-1] * PB;
- }
- for(int len=min(la, lb);len>=0;len--){
- if(check(len)){
- printf("%d", len);
- return 0;
- }
- }
- return 0;
- }
- /*
- ABCDE
- DBAEC
- L = 3, 4 หาค่าไม่ได้
- L = 5 หาค่าได้
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement