#pragma GCC optimize("O3")
#include "dna.h"
#include <bits/stdc++.h>
using namespace std;
string s, c;
const int sz = 100005;
int pref_diff[sz];
void init(string a, string b){
s=a;
c=b;
pref_diff[0] = (a[0]!=b[0]);
for(int i = 1; i < s.size(); i++){
pref_diff[i] = pref_diff[i-1] + (a[i]!=b[i]);
}
}
int get_distance(int x, int y){
string ss=s.substr(x, y-x+1), cc=c.substr(x, y-x+1);
string s2 = ss, c2=cc;
sort(ss.begin(), ss.end());
sort(cc.begin(), cc.end());
if(ss!=cc){
return -1;
}
if(s2==c2){
return 0;
}
if(y-x<3){
sort(ss.begin(), ss.end());
sort(cc.begin(), cc.end());
if(ss!=cc){
return -1;
}if(s2==c2){
return 0;
}if(y-x+1==1){
return 0;
}else if(y-x+1==2){
return 1;
}else {
int cnt = 0;
if(s2[0]!=c2[0]){
cnt++;
}if(s2[1]!=c2[1]){
cnt++;
}if(s2[2]!=c2[2]){
cnt++;
}if(cnt==2){
return 1;
}else {
return 2;
}
}
}else {
int aa = pref_diff[y]-(x>0 ? pref_diff[x-1] : 0);
return aa/2;
}
}
# | 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... |