#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int, int> pii;
int N, M, ans, As, Bs;
char A[3030], B[3030];
int D1[3030][3030];
int D2[3030][3030];
int D3[3030][3030];
int main(){
scanf("%s", A+1);
scanf("%s", B+1);
N = strlen(A+1), M = strlen(B+1);
bool tf=false;
if (N > M){
swap(N, M);
swap(A, B);
tf = true;
}
for (int i=1-N; i<=M-1; i++){
for (int j=N; j>0; j--){
if (i+j < 0 || i+j > M || A[j] != B[i+j]) continue;
D1[j][i+j] = D1[j+1][i+j+1] + 1;
D2[j+D1[j][i+j]-1][i+j] = max(D2[j+D1[j][i+j]-1][i+j], D1[j][i+j]);
D3[j][i+j+D1[j][i+j]-1] = max(D3[j][i+j+D1[j][i+j]-1], D1[j][i+j]);
}
}
for (int i=0; i<=N; i++) for (int j=0; j<=M; j++){
if (ans < D2[i][j+1] + D3[i+1][j]){
ans = D2[i][j+1] + D3[i+1][j];
As = i - D2[i][j+1];
Bs = j - D3[i+1][j];
}
}
memset(D1, 0, sizeof D1);
memset(D2, 0, sizeof D2);
memset(D3, 0, sizeof D3);
for (int i=1; i<=M/2; i++) swap(B[i], B[M-i+1]);
for (int i=1-N; i<=M-1; i++){
for (int j=N; j>0; j--){
if (i+j < 0 || i+j > M || A[j] != B[i+j]) continue;
D1[j][i+j] = D1[j+1][i+j+1] + 1;
D2[j+D1[j][i+j]-1][i+j] = max(D2[j+D1[j][i+j]-1][i+j], D1[j][i+j]);
D3[j][i+j+D1[j][i+j]-1] = max(D3[j][i+j+D1[j][i+j]-1], D1[j][i+j]);
}
}
for (int i=0; i<=N; i++) for (int j=0; j<=M; j++){
if (ans < D2[i][j+1] + D3[i+1][j]){
ans = D2[i][j+1] + D3[i+1][j];
As = i - D2[i][j+1];
Bs = M - j - D2[i][j+1];
}
}
printf("%d\n", ans);
if (tf) printf("%d %d\n", Bs, As);
else printf("%d %d\n", As, Bs);
return 0;
}
Compilation message
necklace.cpp: In function 'int main()':
necklace.cpp:13:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%s", A+1);
~~~~~^~~~~~~~~~~
necklace.cpp:14:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%s", B+1);
~~~~~^~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
90 ms |
108136 KB |
Output is correct |
2 |
Correct |
90 ms |
108152 KB |
Output is correct |
3 |
Correct |
90 ms |
108152 KB |
Output is correct |
4 |
Correct |
91 ms |
108152 KB |
Output is correct |
5 |
Correct |
107 ms |
108152 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
90 ms |
108136 KB |
Output is correct |
2 |
Correct |
90 ms |
108152 KB |
Output is correct |
3 |
Correct |
90 ms |
108152 KB |
Output is correct |
4 |
Correct |
91 ms |
108152 KB |
Output is correct |
5 |
Correct |
107 ms |
108152 KB |
Output is correct |
6 |
Correct |
95 ms |
108152 KB |
Output is correct |
7 |
Correct |
101 ms |
108068 KB |
Output is correct |
8 |
Correct |
95 ms |
108152 KB |
Output is correct |
9 |
Correct |
95 ms |
108152 KB |
Output is correct |
10 |
Correct |
96 ms |
108152 KB |
Output is correct |
11 |
Correct |
96 ms |
108104 KB |
Output is correct |
12 |
Correct |
95 ms |
108152 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
90 ms |
108136 KB |
Output is correct |
2 |
Correct |
90 ms |
108152 KB |
Output is correct |
3 |
Correct |
90 ms |
108152 KB |
Output is correct |
4 |
Correct |
91 ms |
108152 KB |
Output is correct |
5 |
Correct |
107 ms |
108152 KB |
Output is correct |
6 |
Correct |
95 ms |
108152 KB |
Output is correct |
7 |
Correct |
101 ms |
108068 KB |
Output is correct |
8 |
Correct |
95 ms |
108152 KB |
Output is correct |
9 |
Correct |
95 ms |
108152 KB |
Output is correct |
10 |
Correct |
96 ms |
108152 KB |
Output is correct |
11 |
Correct |
96 ms |
108104 KB |
Output is correct |
12 |
Correct |
95 ms |
108152 KB |
Output is correct |
13 |
Correct |
793 ms |
108180 KB |
Output is correct |
14 |
Correct |
643 ms |
108176 KB |
Output is correct |
15 |
Correct |
1115 ms |
108216 KB |
Output is correct |
16 |
Correct |
728 ms |
108200 KB |
Output is correct |
17 |
Correct |
314 ms |
108152 KB |
Output is correct |
18 |
Correct |
327 ms |
108164 KB |
Output is correct |
19 |
Correct |
456 ms |
108168 KB |
Output is correct |
20 |
Correct |
784 ms |
108232 KB |
Output is correct |
21 |
Correct |
776 ms |
108180 KB |
Output is correct |