#include "dna.h"
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+100;
int pref[maxn][3][3];
int g(char c){
return (c=='A'?0:(c=='T'?1:2));
}
void init(std::string a, std::string b) {
for(int i = 0;i<a.length();i++){
if(i)
for(int j = 0;j<3;j++){
for(int k =0;k<3;k++){
pref[i][j][k] = pref[i-1][j][k];
}
}
pref[i][g(a[i])][g(b[i])]++;
}
}
int get_distance(int x, int y) {
int a = 0, b = 1e9;
int m[3][3];
for(int i = 0;i<3;i++){
for(int j = 0;j<3;j++){
m[i][j] = pref[y][i][j]-(x?pref[x-1][i][j]:0);
}
}
if(m[0][1]+m[0][2]!=m[1][0]+m[2][0]||m[1][0]+m[1][2]!=m[0][1]+m[2][1]) return -1;
for(int i = 0;i<3;i++){
for(int j =i+1,mm;j<3;j++){
mm = min(m[i][j],m[j][i]);m[i][j]-=mm,m[j][i]-=mm,a+=mm;
}
}
for(int i =0;i<3;i++){
for(int j =i+1;j<3;j++){
b = min(b,max(m[i][j],m[j][i]));
}
}
return 2*b+a;
}
# | 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... |