#include "dna.h"
#include <bits/stdc++.h>
using namespace std;
int AT[100001], TA[100001], AC[100001], CA[100001], CT[100001], TC[100001];
void init(string a, string b) {
for (int i=0;i<a.size();i++){
AT[i] = (i == 0 ? 0 : AT[i-1]) + (a[i] == 'A' && b[i] == 'T');
TA[i] = (i == 0 ? 0 : TA[i-1]) + (a[i] == 'T' && b[i] == 'A');
AC[i] = (i == 0 ? 0 : AC[i-1]) + (a[i] == 'A' && b[i] == 'C');
CA[i] = (i == 0 ? 0 : CA[i-1]) + (a[i] == 'C' && b[i] == 'A');
TC[i] = (i == 0 ? 0 : TC[i-1]) + (a[i] == 'T' && b[i] == 'C');
CT[i] = (i == 0 ? 0 : CT[i-1]) + (a[i] == 'C' && b[i] == 'T');
}
}
int get_distance(int x, int y) {
int at, ta, ac, ca, tc, ct;
if(x == 0)
at = 0, ta = 0, ac = 0, ca = 0, tc = 0, ct = 0;
else
at = AT[x-1], ta = TA[x-1], ac = AC[x-1], ca = CA[x-1], tc = TC[x-1], ct = CT[x-1];
int ans = min(at, ta) + min(ac, ca) + min(tc, ct),m1 = min(at, ta), m2 = min(ac,ca), m3 = min(ct, tc);
at -= m1, ta -= m1;
ac -= m2, ca -= m2;
tc -= m3, ta -= m3;
if(at-ta+ac-ca != 0 || ct-tc+ca-ac != 0 || ta-at+tc-ct != 0) return -1;
return ans + ((ac+ca+at+ta+tc+ct)/3)*2;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |