This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "dna.h"
#include "bits/stdc++.h"
using namespace std;
int a[100005][3], b[100005][3], dif[100005];
void init(string A, string B)
{
for(int i=0; i<(int)A.length(); i++)
{
if(A[i]!=B[i]) dif[i+1]=1;
dif[i+1]+=dif[i];
if(A[i]=='C') a[i+1][1]=1;
else if(A[i]=='T') a[i+1][2]=1;
else a[i+1][0]=1;
if(B[i]=='C') b[i+1][1]=1;
else if(B[i]=='T') b[i+1][2]=1;
else b[i+1][0]=1;
a[i+1][0]+=a[i][0];
a[i+1][1]+=a[i][1];
a[i+1][2]+=a[i][2];
b[i+1][0]+=b[i][0];
b[i+1][1]+=b[i][1];
b[i+1][2]+=b[i][2];
}
}
int get_distance(int x, int y)
{
int diff=dif[y+1]-dif[x];
int cnt1[3]={a[y+1][0]-a[x][0], a[y+1][1]-a[x][1], a[y+1][2]-a[x][2]};
int cnt2[3]={b[y+1][0]-b[x][0], b[y+1][1]-b[x][1], b[y+1][2]-b[x][2]};
if(cnt1[0]!=cnt2[0] or cnt1[1]!=cnt2[1] or cnt1[2]!=cnt2[2]) return -1;
return diff/2;
}
| # | 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... |