#include "dna.h"
#include<bits/stdc++.h>
using namespace std;
vector<int> at,ta,tc,ct,ca,ac;
void init(std::string a, std::string b) {
int n=a.length();
at.resize(n+1);
ta.resize(n+1);
tc.resize(n+1);
ct.resize(n+1);
ca.resize(n+1);
ac.resize(n+1);
at[0]=ta[0]=tc[0]=ct[0]=ca[0]=ac[0]=0;
for(int i=0;i<n;i++){
at[i+1]=at[i];
ta[i+1]=ta[i];
tc[i+1]=tc[i];
ct[i+1]=ct[i];
ca[i+1]=ca[i];
ac[i+1]=ac[i];
if(a[i]=='A'&&b[i]=='T'){
at[i+1]++;
}else if(a[i]=='T'&&b[i]=='A'){
ta[i+1]++;
}else if(a[i]=='T'&&b[i]=='C'){
tc[i+1]++;
}else if(a[i]=='C'&&b[i]=='T'){
ct[i+1]++;
}else if(a[i]=='C'&&b[i]=='A'){
ca[i+1]++;
}else if(a[i]=='A'&&b[i]=='C'){
ac[i+1]++;
}
}
}
int get_distance(int x, int y) {
y++;
int Aa=at[y]-at[x]+ac[y]-ac[x];
int Ta=ta[y]-ta[x]+tc[y]-tc[x];
int Ca=ca[y]-ca[x]+ct[y]-ct[x];
int Ab=ta[y]-ta[x]+ca[y]-ca[x];
int Tb=at[y]-at[x]+ct[y]-ct[x];
int Cb=ac[y]-ac[x]+tc[y]-tc[x];
if(Aa==Ab&&Ca==Cb&&Ta==Tb){
int AT=at[y]-at[x];
int AC=ac[y]-ac[x];
int TA=ta[y]-ta[x];
int TC=tc[y]-tc[x];
int CA=ca[y]-ca[x];
int CT=ct[y]-ct[x];
int m1=min(AT,TA);
int m2=min(AC,CA);
int m3=min(TC,CT);
int rest=(abs(AT-TA)+abs(AC-CA)+abs(CT-TC));
return m1+m2+m3+rest/3*2;
}
return -1;
}
| # | 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... |