#include "dna.h"
#include <bits/stdc++.h>
using namespace std;
int pfx[100005][6];
int ans,cnt[6];
void init(std::string a,std::string b){
for(int i=0;i<a.size();i++){
pfx[i+1][0]=pfx[i][0]+(a[i]=='A'&b[i]=='T');
pfx[i+1][1]=pfx[i][1]+(a[i]=='A'&b[i]=='C');
pfx[i+1][2]=pfx[i][2]+(a[i]=='T'&b[i]=='A');
pfx[i+1][3]=pfx[i][3]+(a[i]=='T'&b[i]=='C');
pfx[i+1][4]=pfx[i][4]+(a[i]=='C'&b[i]=='A');
pfx[i+1][5]=pfx[i][5]+(a[i]=='C'&b[i]=='T');
}
}
int get_distance(int x,int y){
y++;
for(int i=0;i<6;i++) cnt[i]=pfx[y][i]-pfx[x][i];
if(cnt[0]+cnt[1]!=cnt[2]+cnt[4]) return -1;
if(cnt[2]+cnt[3]!=cnt[0]+cnt[5]) return -1;
if(cnt[4]+cnt[5]!=cnt[1]+cnt[3]) return -1;
ans=min(cnt[0],cnt[2])+min(cnt[1],cnt[4])+min(cnt[3],cnt[5]);
return ans+(max(cnt[0],cnt[2])+max(cnt[1],cnt[4])+max(cnt[3],cnt[5])-ans<<1)/3;
}
# | 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... |