#include "dna.h"
#include <bits/stdc++.h>
using namespace std;
map<string, int> mp;
int n;
int kum[8][100005];
const string dnk[8] = {"AC", "AT", "CA", "CT", "TA", "TC"};
const int LIK = 6;
void init(string a, string b)
{
for (int i = 0; i < LIK; i++)
mp[dnk[i]] = i;
n = a.size();
for (int i = 1; i <= n; i++)
{
string tr(1, a[i-1]);
tr += b[i-1];
for (int ix = 0; ix < LIK; ix++)
kum[ix][i] = kum[ix][i-1];
kum[mp[tr]][i]++;
}
}
int tr_dnk[8];
int get_distance(int x, int y)
{
for (int i = 0; i < LIK; i++)
tr_dnk[i] = kum[i][y+1]-kum[i][x];
tr_dnk[0] -= tr_dnk[2]; // ac, ca
tr_dnk[1] -= tr_dnk[4]; // at, ta
tr_dnk[3] -= tr_dnk[5]; // ct, tc
if (tr_dnk[0] == 0 && tr_dnk[1] == 0 && tr_dnk[3] == 0)
return (tr_dnk[2]) + (tr_dnk[4]) + (tr_dnk[5]);
if (tr_dnk[0] == 1 && tr_dnk[1] == -1 && tr_dnk[3] == 1)
return 2+(tr_dnk[2]) + (tr_dnk[4]-1) + (tr_dnk[5]);
if (tr_dnk[0] == -1 && tr_dnk[1] == 1 && tr_dnk[3] == -1)
return 2+(tr_dnk[2]-1) + (tr_dnk[4]) + (tr_dnk[5]-1);
return -1;
}
# | 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... |