#include <bits/stdc++.h>
#include "dna.h"
using namespace std;
int n;
string dna1;
string dna2;
vector<pair<int, int>> as;
vector<pair<int, int>> cs;
vector<pair<int, int>> ts;
vector<int> c_a;
vector<int> c_t;
vector<int> a_c;
vector<int> a_t;
vector<int> t_c;
vector<int> t_a;
void init(std::string a, std::string b) {
n = a.size();
dna1 = a;
dna2 = b;
as.resize(n + 1, {0, 0});
cs.resize(n + 1, {0, 0});
ts.resize(n + 1, {0, 0});
c_a.resize(n + 1, 0);
c_t.resize(n + 1, 0);
a_c.resize(n + 1, 0);
a_t.resize(n + 1, 0);
t_c.resize(n + 1, 0);
t_a.resize(n + 1, 0);
for (int i = 1; i <= n; i++) {
as[i].first = as[i - 1].first + (dna1[i - 1] == 'A' ? 1 : 0);
as[i].second = as[i - 1].second + (dna2[i - 1] == 'A' ? 1 : 0);
cs[i].first = cs[i - 1].first + (dna1[i - 1] == 'C' ? 1 : 0);
cs[i].second = cs[i - 1].second + (dna2[i - 1] == 'C' ? 1 : 0);
ts[i].first = ts[i - 1].first + (dna1[i - 1] == 'T' ? 1 : 0);
ts[i].second = ts[i - 1].second + (dna2[i - 1] == 'T' ? 1 : 0);
c_a[i] = c_a[i - 1] + (dna2[i - 1] == 'C' && dna1[i - 1] == 'A' ? 1 : 0);
c_t[i] = c_t[i - 1] + (dna2[i - 1] == 'C' && dna1[i - 1] == 'T' ? 1 : 0);
a_c[i] = a_c[i - 1] + (dna2[i - 1] == 'A' && dna1[i - 1] == 'C' ? 1 : 0);
a_t[i] = a_t[i - 1] + (dna2[i - 1] == 'A' && dna1[i - 1] == 'T' ? 1 : 0);
t_c[i] = t_c[i - 1] + (dna2[i - 1] == 'T' && dna1[i - 1] == 'C' ? 1 : 0);
t_a[i] = t_a[i - 1] + (dna2[i - 1] == 'T' && dna1[i - 1] == 'A' ? 1 : 0);
}
}
int get_distance(int x, int y) {
if (as[y + 1].first - as[x].first != as[y + 1].second - as[x].second) return -1;
if (cs[y + 1].first - cs[x].first != cs[y + 1].second - cs[x].second) return -1;
if (ts[y + 1].first - ts[x].first != ts[y + 1].second - ts[x].second) return -1;
int ca = c_a[y + 1] - c_a[x];
int ct = c_t[y + 1] - c_t[x];
int ac = a_c[y + 1] - a_c[x];
int at = a_t[y + 1] - a_t[x];
int tc = t_c[y + 1] - t_c[x];
int ta = t_a[y + 1] - t_a[x];
int ans = 0, mn;
bool b = false;
mn = min(ca, ac);
ans += mn;
ca -= mn;
ac -= mn;
if ((ca || ac) && !b) {
b = true;
ans += 2 * max(ca, ac);
}
mn = min(ct, tc);
ans += mn;
ct -= mn;
tc -= mn;
if ((ct || tc) && !b) {
b = true;
ans += 2 * max(ct, tc);
}
mn = min(at, ta);
ans += mn;
at -= mn;
ta -= mn;
if ((at || ta) && !b) {
b = true;
ans += 2 * max(at, ta);
}
return ans;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
41 ms |
6980 KB |
Output is correct |
2 |
Correct |
42 ms |
8440 KB |
Output is correct |
3 |
Correct |
40 ms |
7900 KB |
Output is correct |
4 |
Correct |
41 ms |
8500 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 |
# |
Verdict |
Execution time |
Memory |
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 |
6 ms |
5836 KB |
Output is correct |
5 |
Correct |
6 ms |
5964 KB |
Output is correct |
6 |
Correct |
6 ms |
5936 KB |
Output is correct |
7 |
Correct |
6 ms |
5580 KB |
Output is correct |
8 |
Correct |
6 ms |
5964 KB |
Output is correct |
9 |
Correct |
6 ms |
6004 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
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 |
6 ms |
5836 KB |
Output is correct |
5 |
Correct |
6 ms |
5964 KB |
Output is correct |
6 |
Correct |
6 ms |
5936 KB |
Output is correct |
7 |
Correct |
6 ms |
5580 KB |
Output is correct |
8 |
Correct |
6 ms |
5964 KB |
Output is correct |
9 |
Correct |
6 ms |
6004 KB |
Output is correct |
10 |
Correct |
55 ms |
8388 KB |
Output is correct |
11 |
Correct |
45 ms |
8388 KB |
Output is correct |
12 |
Correct |
41 ms |
8388 KB |
Output is correct |
13 |
Correct |
44 ms |
8536 KB |
Output is correct |
14 |
Correct |
47 ms |
8772 KB |
Output is correct |
15 |
Correct |
56 ms |
8772 KB |
Output is correct |
16 |
Correct |
43 ms |
8292 KB |
Output is correct |
17 |
Correct |
40 ms |
8388 KB |
Output is correct |
18 |
Correct |
45 ms |
8748 KB |
Output is correct |
19 |
Correct |
39 ms |
8260 KB |
Output is correct |
20 |
Correct |
38 ms |
8472 KB |
Output is correct |
21 |
Correct |
39 ms |
8848 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
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 |
6 ms |
5836 KB |
Output is correct |
5 |
Correct |
6 ms |
5964 KB |
Output is correct |
6 |
Correct |
6 ms |
5936 KB |
Output is correct |
7 |
Correct |
6 ms |
5580 KB |
Output is correct |
8 |
Correct |
6 ms |
5964 KB |
Output is correct |
9 |
Correct |
6 ms |
6004 KB |
Output is correct |
10 |
Correct |
6 ms |
5452 KB |
Output is correct |
11 |
Correct |
6 ms |
5964 KB |
Output is correct |
12 |
Correct |
9 ms |
5580 KB |
Output is correct |
13 |
Correct |
7 ms |
5964 KB |
Output is correct |
14 |
Correct |
6 ms |
5964 KB |
Output is correct |
15 |
Correct |
6 ms |
5964 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
41 ms |
6980 KB |
Output is correct |
2 |
Correct |
42 ms |
8440 KB |
Output is correct |
3 |
Correct |
40 ms |
7900 KB |
Output is correct |
4 |
Correct |
41 ms |
8500 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 |
6 ms |
5836 KB |
Output is correct |
12 |
Correct |
6 ms |
5964 KB |
Output is correct |
13 |
Correct |
6 ms |
5936 KB |
Output is correct |
14 |
Correct |
6 ms |
5580 KB |
Output is correct |
15 |
Correct |
6 ms |
5964 KB |
Output is correct |
16 |
Correct |
6 ms |
6004 KB |
Output is correct |
17 |
Correct |
55 ms |
8388 KB |
Output is correct |
18 |
Correct |
45 ms |
8388 KB |
Output is correct |
19 |
Correct |
41 ms |
8388 KB |
Output is correct |
20 |
Correct |
44 ms |
8536 KB |
Output is correct |
21 |
Correct |
47 ms |
8772 KB |
Output is correct |
22 |
Correct |
56 ms |
8772 KB |
Output is correct |
23 |
Correct |
43 ms |
8292 KB |
Output is correct |
24 |
Correct |
40 ms |
8388 KB |
Output is correct |
25 |
Correct |
45 ms |
8748 KB |
Output is correct |
26 |
Correct |
39 ms |
8260 KB |
Output is correct |
27 |
Correct |
38 ms |
8472 KB |
Output is correct |
28 |
Correct |
39 ms |
8848 KB |
Output is correct |
29 |
Correct |
6 ms |
5452 KB |
Output is correct |
30 |
Correct |
6 ms |
5964 KB |
Output is correct |
31 |
Correct |
9 ms |
5580 KB |
Output is correct |
32 |
Correct |
7 ms |
5964 KB |
Output is correct |
33 |
Correct |
6 ms |
5964 KB |
Output is correct |
34 |
Correct |
6 ms |
5964 KB |
Output is correct |
35 |
Correct |
1 ms |
204 KB |
Output is correct |
36 |
Correct |
41 ms |
7876 KB |
Output is correct |
37 |
Correct |
41 ms |
8492 KB |
Output is correct |
38 |
Correct |
52 ms |
8480 KB |
Output is correct |
39 |
Correct |
49 ms |
8856 KB |
Output is correct |
40 |
Correct |
44 ms |
8816 KB |
Output is correct |
41 |
Correct |
6 ms |
5964 KB |
Output is correct |
42 |
Correct |
40 ms |
8344 KB |
Output is correct |
43 |
Correct |
49 ms |
8772 KB |
Output is correct |
44 |
Correct |
40 ms |
8744 KB |
Output is correct |
45 |
Correct |
38 ms |
8336 KB |
Output is correct |
46 |
Correct |
39 ms |
8772 KB |
Output is correct |
47 |
Correct |
39 ms |
8788 KB |
Output is correct |