#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <map>
using namespace std;
#define Asize 10
int N,M;
int a[1510],b[1510],tmp[1510];
char s[1510];
struct data{
long long a[Asize];
bool operator<(const data x)const{
int i;
for(i=0; i<Asize; i++){
if(x.a[i] != a[i]) return a[i] < x.a[i];
}
return false;
}
};
struct data2{
long long a[26];
}cnt1[1510],cnt2[1510];
data t;
map<data,bool> Map;
long long square[10];
void setting(){
int i,j,k;
square[0] = 1;
for(i=1; i<=3; i++) square[i] = square[i-1]*1501;
scanf("%s",s);
N = strlen(s);
for(i=1; i<=N; i++) a[i] = s[i-1]-'a';
scanf("%s",s);
M = strlen(s);
for(i=1; i<=M; i++) b[i] = s[i-1]-'a';
if(N > M){
for(i=1; i<=N; i++) tmp[i] = a[i];
for(i=1; i<=M; i++) a[i] = b[i];
for(i=1; i<=N; i++) b[i] = tmp[i];
swap(N,M);
}
for(i=1; i<=N; i++){
for(j=0; j<26; j++) cnt1[i].a[j] = cnt1[i-1].a[j];
cnt1[i].a[a[i]]++;
}
for(i=1; i<=M; i++){
for(j=0; j<26; j++) cnt2[i].a[j] = cnt2[i-1].a[j];
cnt2[i].a[b[i]]++;
}
}
int main(){
int i,j,k;
//freopen("input.txt","r",stdin);
setting();
for(i=N-1; i>=0; i--){
Map.clear();
for(j=1; j+i<=M; j++){
for(k=0; k<Asize; k++) t.a[k] = 0;
for(k=0; k<26; k++) t.a[k/3] += ((cnt2[j+i].a[k]-cnt2[j-1].a[k])*square[k%3]);
Map[t] = true;
}
for(j=1; j+i<=N; j++){
for(k=0; k<Asize; k++) t.a[k] = 0;
for(k=0; k<26; k++) t.a[k/3] += ((cnt1[j+i].a[k]-cnt1[j-1].a[k])*square[k%3]);
if(Map.find(t) != Map.end()){
printf("%d",i+1);
return 0;
}
}
}
printf("0");
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
1852 KB |
Output is correct |
2 |
Correct |
0 ms |
1852 KB |
Output is correct |
3 |
Correct |
0 ms |
1852 KB |
Output is correct |
4 |
Correct |
3 ms |
1852 KB |
Output is correct |
5 |
Correct |
2 ms |
1852 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
54 ms |
1852 KB |
Output is correct |
2 |
Correct |
33 ms |
1852 KB |
Output is correct |
3 |
Correct |
0 ms |
1852 KB |
Output is correct |
4 |
Correct |
0 ms |
1852 KB |
Output is correct |
5 |
Correct |
58 ms |
1852 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
241 ms |
1852 KB |
Output is correct |
2 |
Correct |
265 ms |
1852 KB |
Output is correct |
3 |
Correct |
255 ms |
1852 KB |
Output is correct |
4 |
Correct |
248 ms |
1852 KB |
Output is correct |
5 |
Correct |
258 ms |
1852 KB |
Output is correct |
6 |
Correct |
249 ms |
1852 KB |
Output is correct |
7 |
Correct |
257 ms |
1852 KB |
Output is correct |
8 |
Correct |
256 ms |
1852 KB |
Output is correct |
9 |
Correct |
260 ms |
1852 KB |
Output is correct |
10 |
Correct |
252 ms |
1852 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
49 ms |
1852 KB |
Output is correct |
2 |
Correct |
514 ms |
1984 KB |
Output is correct |
3 |
Correct |
443 ms |
1984 KB |
Output is correct |
4 |
Correct |
20 ms |
1852 KB |
Output is correct |
5 |
Correct |
602 ms |
1984 KB |
Output is correct |