#include "dna.h"
#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 1e5+5;
int TotalA[MAX_N][3], TotalB[MAX_N][3];
int Rep[MAX_N][3][3];
int A[MAX_N];
int B[MAX_N];
int n;
void init(string a, string b)
{
n = a.size();
for(int i = 0; i < n; i++) {
switch(a[i]) {
case 'A':
A[i] = 0;
break;
case 'C':
A[i] = 1;
break;
case 'T':
A[i] = 2;
break;
}
switch(b[i]) {
case 'A':
B[i] = 0;
break;
case 'C':
B[i] = 1;
break;
case 'T':
B[i] = 2;
break;
}
}
for(int i = 0; i < n; i++) {
for(int k = 0; k < 3; k++) {
if(i) {
TotalA[i][k] = TotalA[i - 1][k];
TotalB[i][k] = TotalB[i - 1][k];
}
TotalA[i][k] += (A[i] == k);
TotalB[i][k] += (B[i] == k);
}
if(i) {
for(int ii = 0; ii < 3; ii++) {
for(int jj = 0; jj < 3; jj++) {
Rep[i][ii][jj] = Rep[i-1][ii][jj];
}
}
}
if(A[i] != B[i]) {
Rep[i][A[i]][B[i]]++;
}
}
}
int get_distance(int x, int y)
{
int totA[3], totB[3];
for(int k = 0; k < 3; k++) {
totA[k] = TotalA[y][k] - (x ? TotalA[x-1][k] : 0);
totB[k] = TotalB[y][k] - (x ? TotalB[x-1][k] : 0);
if(totA[k] != totB[k]) {
return -1;
}
}
int sum = 0;
int dist = 0;
int R[3][3] = { 0 };
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
R[i][j] = Rep[y][i][j] - (x ? Rep[x-1][i][j] : 0);
}
}
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
sum += R[i][j];
if(i <= j)
continue;
dist += min(R[i][j], R[j][i]);
sum -= 2 * min(R[i][j], R[j][i]);
}
}
return dist + sum / 3 * 2;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
52 ms |
8708 KB |
Output is correct |
2 |
Correct |
48 ms |
8832 KB |
Output is correct |
3 |
Correct |
47 ms |
8176 KB |
Output is correct |
4 |
Correct |
53 ms |
8832 KB |
Output is correct |
5 |
Correct |
1 ms |
204 KB |
Output is correct |
6 |
Correct |
1 ms |
204 KB |
Output is correct |
7 |
Correct |
1 ms |
204 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
1 ms |
204 KB |
Output is correct |
3 |
Correct |
1 ms |
204 KB |
Output is correct |
4 |
Correct |
8 ms |
7396 KB |
Output is correct |
5 |
Correct |
9 ms |
7476 KB |
Output is correct |
6 |
Correct |
8 ms |
7432 KB |
Output is correct |
7 |
Correct |
8 ms |
6988 KB |
Output is correct |
8 |
Correct |
8 ms |
7500 KB |
Output is correct |
9 |
Correct |
7 ms |
7504 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
1 ms |
204 KB |
Output is correct |
3 |
Correct |
1 ms |
204 KB |
Output is correct |
4 |
Correct |
8 ms |
7396 KB |
Output is correct |
5 |
Correct |
9 ms |
7476 KB |
Output is correct |
6 |
Correct |
8 ms |
7432 KB |
Output is correct |
7 |
Correct |
8 ms |
6988 KB |
Output is correct |
8 |
Correct |
8 ms |
7500 KB |
Output is correct |
9 |
Correct |
7 ms |
7504 KB |
Output is correct |
10 |
Correct |
51 ms |
8700 KB |
Output is correct |
11 |
Correct |
66 ms |
8744 KB |
Output is correct |
12 |
Correct |
52 ms |
8696 KB |
Output is correct |
13 |
Correct |
50 ms |
8844 KB |
Output is correct |
14 |
Correct |
51 ms |
9088 KB |
Output is correct |
15 |
Correct |
48 ms |
9028 KB |
Output is correct |
16 |
Correct |
48 ms |
8676 KB |
Output is correct |
17 |
Correct |
46 ms |
8824 KB |
Output is correct |
18 |
Correct |
45 ms |
9088 KB |
Output is correct |
19 |
Correct |
48 ms |
8720 KB |
Output is correct |
20 |
Correct |
42 ms |
8868 KB |
Output is correct |
21 |
Correct |
43 ms |
9220 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
1 ms |
204 KB |
Output is correct |
3 |
Correct |
1 ms |
204 KB |
Output is correct |
4 |
Correct |
8 ms |
7396 KB |
Output is correct |
5 |
Correct |
9 ms |
7476 KB |
Output is correct |
6 |
Correct |
8 ms |
7432 KB |
Output is correct |
7 |
Correct |
8 ms |
6988 KB |
Output is correct |
8 |
Correct |
8 ms |
7500 KB |
Output is correct |
9 |
Correct |
7 ms |
7504 KB |
Output is correct |
10 |
Correct |
7 ms |
6812 KB |
Output is correct |
11 |
Correct |
9 ms |
7500 KB |
Output is correct |
12 |
Correct |
8 ms |
6988 KB |
Output is correct |
13 |
Correct |
11 ms |
7496 KB |
Output is correct |
14 |
Correct |
9 ms |
7532 KB |
Output is correct |
15 |
Correct |
8 ms |
7500 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
52 ms |
8708 KB |
Output is correct |
2 |
Correct |
48 ms |
8832 KB |
Output is correct |
3 |
Correct |
47 ms |
8176 KB |
Output is correct |
4 |
Correct |
53 ms |
8832 KB |
Output is correct |
5 |
Correct |
1 ms |
204 KB |
Output is correct |
6 |
Correct |
1 ms |
204 KB |
Output is correct |
7 |
Correct |
1 ms |
204 KB |
Output is correct |
8 |
Correct |
1 ms |
204 KB |
Output is correct |
9 |
Correct |
1 ms |
204 KB |
Output is correct |
10 |
Correct |
1 ms |
204 KB |
Output is correct |
11 |
Correct |
8 ms |
7396 KB |
Output is correct |
12 |
Correct |
9 ms |
7476 KB |
Output is correct |
13 |
Correct |
8 ms |
7432 KB |
Output is correct |
14 |
Correct |
8 ms |
6988 KB |
Output is correct |
15 |
Correct |
8 ms |
7500 KB |
Output is correct |
16 |
Correct |
7 ms |
7504 KB |
Output is correct |
17 |
Correct |
51 ms |
8700 KB |
Output is correct |
18 |
Correct |
66 ms |
8744 KB |
Output is correct |
19 |
Correct |
52 ms |
8696 KB |
Output is correct |
20 |
Correct |
50 ms |
8844 KB |
Output is correct |
21 |
Correct |
51 ms |
9088 KB |
Output is correct |
22 |
Correct |
48 ms |
9028 KB |
Output is correct |
23 |
Correct |
48 ms |
8676 KB |
Output is correct |
24 |
Correct |
46 ms |
8824 KB |
Output is correct |
25 |
Correct |
45 ms |
9088 KB |
Output is correct |
26 |
Correct |
48 ms |
8720 KB |
Output is correct |
27 |
Correct |
42 ms |
8868 KB |
Output is correct |
28 |
Correct |
43 ms |
9220 KB |
Output is correct |
29 |
Correct |
7 ms |
6812 KB |
Output is correct |
30 |
Correct |
9 ms |
7500 KB |
Output is correct |
31 |
Correct |
8 ms |
6988 KB |
Output is correct |
32 |
Correct |
11 ms |
7496 KB |
Output is correct |
33 |
Correct |
9 ms |
7532 KB |
Output is correct |
34 |
Correct |
8 ms |
7500 KB |
Output is correct |
35 |
Correct |
1 ms |
204 KB |
Output is correct |
36 |
Correct |
63 ms |
8160 KB |
Output is correct |
37 |
Correct |
50 ms |
8804 KB |
Output is correct |
38 |
Correct |
52 ms |
8716 KB |
Output is correct |
39 |
Correct |
53 ms |
9156 KB |
Output is correct |
40 |
Correct |
52 ms |
9084 KB |
Output is correct |
41 |
Correct |
7 ms |
7500 KB |
Output is correct |
42 |
Correct |
45 ms |
8692 KB |
Output is correct |
43 |
Correct |
47 ms |
9084 KB |
Output is correct |
44 |
Correct |
47 ms |
9156 KB |
Output is correct |
45 |
Correct |
43 ms |
8728 KB |
Output is correct |
46 |
Correct |
42 ms |
9216 KB |
Output is correct |
47 |
Correct |
42 ms |
9176 KB |
Output is correct |