#include "dna.h"
#include <bits/stdc++.h>
#define ll long long int
using namespace std;
string a, b; int n;
vector<ll> aa, at, ac, ba, bt, bc;
void init(string aa, string bb) {
a = aa; b = bb; n = a.size();
aa.resize(n); ba.resize(n);
at.resize(n); bt.resize(n);
ac.resize(n); bc.resize(n);
if (a[0] == 'A') aa[0]++;
if (b[0] == 'A') ba[0]++;
if (a[0] == 'T') at[0]++;
if (b[0] == 'T') bt[0]++;
if (a[0] == 'C') ac[0]++;
if (b[0] == 'C') bc[0]++;
for (int i = 1; i < n; i++) {
aa[i] = aa[i-1]; at[i] = at[i-1]; ac[i] = ac[i-1];
ba[i] = ba[i-1]; bt[i] = bt[i-1]; bc[i] = bc[i-1];
if (a[i] == 'A') aa[i]++;
if (b[i] == 'A') ba[i]++;
if (a[i] == 'T') at[i]++;
if (b[i] == 'T') bt[i]++;
if (a[i] == 'C') ac[i]++;
if (b[i] == 'C') bc[i]++;
}
}
int get_distance(int x, int y) {
ll asa = aa[y], bsa = ba[y];
ll ast = at[y], bst = bt[y];
ll asc = ac[y], bsc = bc[y];
if (x > 0) {
asa -= aa[x-1]; bsa -= ba[x-1];
ast -= at[x-1]; bst -= bt[x-1];
asc -= ac[x-1]; bsc -= bc[x-1];
}
if (asa != bsa) return -1;
if (ast != bst) return -1;
if (asc != bsc) return -1;
int cnt = 0;
for (int i = x; i <= y; i++) {
if (a[i] != b[i]) cnt++;
}
return cnt/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... |