#include "dna.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define P pair
#define S second
#define F first
#define V vector
int pref1[(int)1e5+1][6];
V<P<char,char>>v2={{'A','T'},{'T','A'},{'A','C'},{'C','A'},{'T','C'},{'C','T'}};
void init(string a, string b) {
a='.'+a;
b='.'+b;
int n=(int)a.size()-1;
for (int i=1;i<=n;i++) {
for (int j=0;j<6;j++) {
pref1[i][j]=pref1[i-1][j];
if (a[i]==v2[j].F && b[i]==v2[j].S) {
pref1[i][j]++;
}
}
}
}
int get_distance(int x, int y) {
y++;
int ans=0;
int c=0;
int cnt[3]={0,0,0};
for (int j=0;j<6;j+=2) {
int a=pref1[y][j]-pref1[x][j];
int b=pref1[y][j+1]-pref1[x][j+1];
ans+=min(a,b);
c+=max(a,b)-min(a,b);
cnt[j%3]+=max(a,b)-min(a,b);
}
for (int i=0;i<3;i++) {
for (int j=0;j<3;j++) {
if (cnt[i]!=cnt[j])return-1;
}
}
ans+=(2*c)/3;
return ans;
}
# | 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... |