#include<bits/stdc++.h>
using namespace std;
vector<map<string,int>> V(1e5);
string ax,bx;
void init(std::string a, std::string b) {
ax=a,bx=b;
int cnt =0;
string s = "";
s+=a[0];
s+=b[0];
string arr[6] = {"AT","TA","AC","CA","CT","TC"};
for(auto x: arr){
if(x==s){
V[0][x]=1;
}else{
V[0][x]=0;
}
}
for(int i=1;i<a.size();i++){
s = "";
s += a[i];
s += b[i];
//cout << s;
for(auto x: arr){
if(x==s){
V[i][x]=V[i-1][x]+1;
//c//out << x << V[i][x] <<endl;
}else{
V[i][x]=V[i-1][x];
}
}
}
}
int get_distance(int x, int y) {
int cnt =0;
int r =0;
string arr[6] = {"AT","TA","AC","CA","CT","TC"};
cnt += min(V[y]["AT"]-V[x-1]["AT"],V[y]["TA"]-V[x-1]["TA"]);
r += max(V[y]["AT"]-V[x-1]["AT"],V[y]["TA"]-V[x-1]["TA"]) - min(V[y]["AT"]-V[x-1]["AT"],V[y]["TA"]-V[x-1]["TA"]);
//cout << cnt<< " " << r<<endl;
cnt += min(V[y]["AC"]-V[x-1]["AC"],V[y]["CA"]-V[x-1]["CA"]);
r += max(V[y]["AC"]-V[x-1]["AC"],V[y]["CA"]-V[x-1]["CA"]) - min(V[y]["AC"]-V[x-1]["AC"],V[y]["CA"]-V[x-1]["CA"]);
//cout << cnt<< " " << r<<endl;
cnt += min(V[y]["CT"]-V[x-1]["CT"],V[y]["TC"]-V[x-1]["TC"]);
r += max(V[y]["CT"]-V[x-1]["CT"],V[y]["TC"]-V[x-1]["TC"]) - min(V[y]["CT"]-V[x-1]["CT"],V[y]["TC"]-V[x-1]["TC"]);
//cout << cnt<< " " << r<<endl;
cnt += r*2/3;
return cnt;
}
# | 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... |