#include "dna.h"
using namespace std;
#include <bits/stdc++.h>
#define vt vector
vt<vt<int>> pref(1e5+7, vt<int>(6, 0));
void init(std::string a, std::string b) {
int n=a.size();
for(int i=1; i<=n; i++){
vt<char> p = {a[i-1], b[i-1]};
pref[i]=pref[i-1];
vt<char> x = {'A', 'T'};
if(p==x){
pref[i][5]++;
}
x = {'A', 'C'};
if(p==x){
pref[i][0]++;
}
x={'T', 'A'};
if(p==x){
pref[i][4]++;
}
x={'C', 'T'};
if(p==x){
pref[i][3]++;
}
x={'T', 'C'};
if(p==x){
pref[i][2]++;
}
x={'C', 'A'};
if(p==x){
pref[i][1]++;
}
}
}
int get_distance(int x, int y) {
vt<int> p(6);
for(int i=0; i<6; i++){
p[i]=pref[y+1][i]-pref[x][i];
}
int ans=0;
for(int i=0; i<3; i++){
int u = min(p[i*2], p[i*2+1]);
p[i*2]-=u; p[i*2+1]-=u;
ans+=u;
//cout<<u<<"\n"; cout<<p[i*2]<<" "<<p[i*2+1]<<"\n";
}
int u = min({p[0], p[3], p[4]});
p[0]-=u; p[3]-=u; p[4]-=u;
ans+=u*2;
//cout<<"||||||||||||||||\n";
u = min({p[1], p[2], p[5]});
p[1]-=u; p[2]-=u; p[5]-=u;
ans+=u*2;
if((p[0] || p[1] || p[2]|| p[3] || p[4] ||p[5])) return -1;
return ans;
}
# | 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... |