#include <bits/stdc++.h>
using namespace std;
/**ifstream fin ("date.in");
ofstream fout ("date.out");
#define cin fin
#define cout fout**/
const int MAXN=1e5+10;
const int INF=1e9;
int f (char c){
if (c=='A') return 0;
if (c=='C') return 1;
if (c=='T') return 2;
}
int a[3][3][MAXN],n;
void init(string s1, string s2){
n=s1.size ();
for (int i=1;i<=n;++i){
int x=f (s1[i-1]),y=f (s2[i-1]);
for (int j=0;j<3;++j){
for (int k=0;k<3;++k){
a[j][k][i]=a[j][k][i-1];
}
}
a[x][y][i]++;
}
}
int crt[3][3];
int get_distance(int l, int r){
l++,r++;
for (int i=0;i<3;++i){
for (int j=0;j<3;++j){
crt[i][j]=a[i][j][r]-a[i][j][l-1];
}
}
for (int i=0;i<3;++i){
int x=0,y=0;
for (int j=0;j<3;
++j){
if (i==j) continue;
x+=crt[i][j];
y+=crt[j][i];
}
if (x!=y){
return -1;
}
}
int rez=0;
for (int i=0;i<3;++i){
for (int j=0;j<3;++j){
if (i==j) continue;
int x=min (crt[i][j],crt[j][i]);
rez+=x;
crt[i][j]-=x;
crt[j][i]-=x;
}
}
int x=0;
for (int i=0;i<3;++i){
for (int j=0;j<3;++j){
if (i!=j){
x=max (x,crt[i][j]);
}
//cout <<crt[i][j]<<' ';
}
//cout <<'\n';
}
rez+=2*x;
return rez;
}
Compilation message (stderr)
dna.cpp: In function 'int f(char)':
dna.cpp:15:1: warning: control reaches end of non-void function [-Wreturn-type]
15 | }
| ^| # | 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... |