#include "dna.h"
#include<bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define vi vector<int>
#define f0r(i,n) for(int i = 0; i<n; i++)
#define FOR(i, k, n) for(int i = k; i<n; i++)
#define pii pair<int,int>
#define vvi vector<vector<int>>
#define vb vector<bool>
#define vpii vector<pair<int,int>>
#define vout(v) for(auto u : v)cout<<u<<' '; cout<<endl;
#define dout(x) cout<<x<<' '<<#x<<endl;
#define dout2(x,y) cout<<x<<' '<<#x<<' '<<y<<' '<<#y<<endl;
using namespace std;
vvi ps;
int n;
vi a; vi b;
void init(std::string A, std::string B) {
n = A.size();
a.resize(n); b.resize(n);
f0r(i,n){
if(A[i] == 'A')a[i] = 0;
else if(A[i] == 'C')a[i] = 1;
else a[i] = 2;
if(B[i] == 'A')b[i] = 0;
else if(B[i] == 'C')b[i] = 1;
else b[i] = 2;
}
ps.resize(n + 1);
f0r(i,n+1)ps[i].resize(6);
FOR(i, 1, n+1){
ps[i][0] = ps[i-1][0] + (a[i-1] == 0 && b[i-1] == 1);
ps[i][1] = ps[i-1][1] + (a[i-1] == 1 && b[i-1] == 0);
ps[i][2] = ps[i-1][2] + (a[i-1] == 0 && b[i-1] == 2);
ps[i][3] = ps[i-1][3] + (a[i-1] == 2 && b[i-1] == 0);
ps[i][4] = ps[i-1][4] + (a[i-1] == 1 && b[i-1] == 2);
ps[i][5] = ps[i-1][5] + (a[i-1] == 2 && b[i-1] == 1);
}
/*
f0r(i,6){
f0r(j, n+1)cout<<ps[j][i]<<' ';
cout<<'\n';
}
*/
}
int get_distance(int x, int y) {
vi v(6);
f0r(i,6){
v[i] = ps[y+1][i] - ps[x][i];
}
// vout(v);
if(v[0] + v[5] != v[1] + v[4])return -1;
if(v[1] + v[3] != v[0] + v[2])return -1;
if(v[2] + v[4] != v[3] + v[5])return -1;
return min(v[0], v[1]) + min(v[2], v[3]) + min(v[4], v[5]) + 2 * (max(v[0],v[1]) - min(v[0],v[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... |