#include "dna.h"
#include <bits/stdc++.h>
using namespace std;
using vi = vector<int>;
int n;
string A, B;
vi acount[2], tcount[2], ps;
void init(string a, string b) {
A = a;
B = b;
n = (int) a.size();
acount[0].assign(n + 1, 0);
acount[1].assign(n + 1, 0);
tcount[0].assign(n + 1, 0);
tcount[1].assign(n + 1, 0);
ps.assign(n + 1, 0);
for (int i = 0; i < n; i++) {
ps[i + 1] = ps[i];
acount[0][i + 1] = acount[0][i];
acount[1][i + 1] = acount[1][i];
tcount[0][i + 1] = tcount[0][i];
tcount[1][i + 1] = tcount[1][i];
bool aA = a[i] == 'A', aT = a[i] == 'T';
bool bA = b[i] == 'A', bT = b[i] == 'T';
if (aT && bA) {
ps[i + 1] ++;
}
if (aA) acount[0][i+1]++;
if (aT) tcount[0][i+1]++;
if (bA) acount[1][i+1]++;
if (bT) tcount[1][i+1]++;
// cout << "a[" << i << "] = " << a[i] << " and b[" << i << "] = " << b[i] << "\n";
// cout << "ps[" << i+1 << "] = " << ps[i+1] << "\n";
// cout << "is there a mismatch? " << ((a[i] == 'T' && b[i] == 'A') ? 1 : 0) << "\n";
}
}
int get_distance(int x, int y) {
int aA = acount[0][y + 1] - acount[0][x];
int bA = acount[1][y + 1] - acount[1][x];
int aT = tcount[0][y + 1] - tcount[0][x];
int bT = tcount[1][y + 1] - tcount[1][x];
if ((aA != bA) || (aT != bT)) {
return -1;
}
// cout << "ps[y+1] = " << ps[y + 1] << " and ps[x] = " << ps[x] << "\n";
return ps[y + 1] - ps[x];
}
# | 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... |