#include "dna.h"
#include <bits/stdc++.h>
using namespace std;
#define name "dna"
#define MAXN 100005
#define pb push_back
#define pf push_front
#define ll long long
#define ii pair<int, int>
#define fs first
#define sc second
#define ill pair<int, ll>
#define lli pair<ll, int>
#define llll pair<ll, ll>
#define all(v) v.begin(),v.end()
#define uni(v) v.erase(unique(all(v)),v.end())
#define bit(n,i) (((n)>>(i))&1)
#define FOR(i,a,b) for (int i=(a),_b=(b); i<=_b; i++)
#define FORD(i,a,b) for (int i=(a),_b=(b); i>=_b; i--)
#define MASK(i) (1LL<<(i))
const int INF=1e9;
const int MOD=1e9+7;
void add(int &u, int v){
u+=v;
if (u>=MOD) u-=MOD;
}
void sub(int &u, int v){
u-=v;
if (u<0) u+=MOD;
}
void minimize(int &u, int v){
u=min(u,v);
}
void maximize(int &u, int v){
u=max(u,v);
}
long long Rand(long long l, long long r){
ll tmp=0;
FOR(i,1,4) tmp=((tmp<<15)^(((1<<15)-1)&rand()));
return l+tmp%(r-l+1);
}
int cnt[MAXN][3][3];
int cnt_A[MAXN][3];
int cnt_B[MAXN][3];
int c[MAXN],d[MAXN];
void init(string a, string b){
int n=(int)a.size();
a=" "+a;
b=" "+b;
FOR(i,1,n){
if (a[i]=='A') c[i]=0;
else if (a[i]=='T') c[i]=1;
else c[i]=2;
if (b[i]=='A') d[i]=0;
else if (b[i]=='T') d[i]=1;
else d[i]=2;
}
FOR(i,1,n){
FOR(j,0,2) cnt_A[i][j]=cnt_A[i-1][j];
cnt_A[i][c[i]]++;
FOR(j,0,2) cnt_B[i][j]=cnt_B[i-1][j];
cnt_B[i][d[i]]++;
FOR(j,0,2) FOR(k,0,2) cnt[i][j][k]=cnt[i-1][j][k];
cnt[i][c[i]][d[i]]++;
}
}
int get_distance(int x, int y){
++x;
++y;
FOR(i,0,2){
if (cnt_A[y][i]-cnt_A[x-1][i]!=cnt_B[y][i]-cnt_B[x-1][i]) return -1;
}
int ans=0;
int cnt01=cnt[y][0][1]-cnt[x-1][0][1];
int cnt10=cnt[y][1][0]-cnt[x-1][1][0];
int cnt02=cnt[y][0][2]-cnt[x-1][0][2];
int cnt20=cnt[y][2][0]-cnt[x-1][2][0];
int cnt12=cnt[y][1][2]-cnt[x-1][1][2];
int cnt21=cnt[y][2][1]-cnt[x-1][2][1];
int tmp;
//0,1
tmp=min(cnt01,cnt10);
ans+=tmp;
cnt01-=tmp;
cnt10-=tmp;
//0,2
tmp=min(cnt02,cnt20);
ans+=tmp;
cnt02-=tmp;
cnt20-=tmp;
//1,2
tmp=min(cnt12,cnt21);
ans+=tmp;
cnt12-=tmp;
cnt21-=tmp;
int u=max(cnt01,cnt10);
int v=max(cnt02,cnt20);
return ans+u+v;
}
# | 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... |