#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];
if (tr_dnk[0] < tr_dnk[2]) swap(tr_dnk[0], tr_dnk[2]);
if (tr_dnk[1] < tr_dnk[4]) swap(tr_dnk[1], tr_dnk[4]);
if (tr_dnk[3] < tr_dnk[5]) swap(tr_dnk[3], tr_dnk[5]);
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]) != (tr_dnk[1]) || (tr_dnk[0]) != (tr_dnk[3]))
return -1;
int rez = (tr_dnk[2]) + (tr_dnk[4]) + (tr_dnk[5]);
rez += tr_dnk[0];
return rez;
}
# | 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... |