#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define pll pair<ll, ll>
#define ppll pair<pll, ll>
#define fll(iiii, n) for (ll iiii =0 ; iiii < n; iiii++)
#define fllr(i, n1, n2) for (ll i = n1; i <= n2; i++)
#define vll vector<ll>
#define ft first
#define sd second
#define prtv(V) fll(i, V.size()) cout << V[i] << " "; cout << '\n';
ll INF = 2e18;
vll A;
vll X[2], Y[2], Z[2];
bool cnt(vll X[], ll x, ll y)
{
return X[0][y+1]-X[0][x] == X[1][y+1]-X[1][x];
}
void init(std::string a, std::string b)
{
ll n = a.length();
A = vll(n);
fll(i, n)
A[i+1] = a[i] == b[i];
fll(i, n) A[i+1] += A[i];
fll(i, 2)
{
X[i] = vll(n+1);
Y[i] = vll(n+1);
Z[i] = vll(n+1);
}
fll(i, n)
{
X[0][i+1] = X[0][i] + (a[i] == 'A');
X[1][i+1] = X[1][i] + (b[i] == 'A');
Y[0][i+1] = Y[0][i] + (a[i] == 'C');
Y[1][i+1] = Y[1][i] + (b[i] == 'C');
Z[0][i+1] = Z[0][i] + (a[i] == 'T');
Z[1][i+1] = Z[1][i] + (b[i] == 'T');
}
}
int get_distance(int x, int y)
{
if (cnt(X, x, y) && cnt(Y, x, y) && cnt(Z, x, y))
return y-x - A[y+1]+A[x];
return -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... |