#include <bits/stdc++.h>
#include "dna.h"
using namespace std;
int n, q;
string a, b;
vector<int> pref;
vector<vector<int>> preff(2, vector<int>(n + 1)), pref2(2, vector<int>(n + 1));
// A is 0, T is 1
void init(string A, string B) {
a = A;
b = B;
n = a.size();
pref.resize(n + 1);
preff[0].resize(n + 1);
preff[1].resize(n + 1);
pref2[0].resize(n + 1);
pref2[1].resize(n + 1);
preff[0][0]=0;
pref2[0][1]=0;
preff[0][0]=0;
pref2[0][1]=0;
pref[0]=0;
int diff = 0, freqa1 = 0, freqa2 = 0, freqt1 = 0, freqt2 = 0;
for (int i = 1; i <= n; i++) {
if (a[i-1] == 'T') freqt1++;
if (a[i-1] == 'A') freqa1++;
if (b[i-1] == 'A') freqa2++;
if (b[i-1] == 'T') freqt2++;
diff += (a[i-1] != b[i-1]);
pref[i] = diff;
preff[0][i] = freqa1;
preff[1][i] = freqt1;
pref2[0][i] = freqa2;
pref2[1][i] = freqt2;
}
//for (int i = 0; i <= n; i++) cout << pref[i] << " ";
//cout << endl;
}
int get_distance(int x, int y) {
int dist = y - x + 1;
if (y <= x + 2) {
string s1 = "", s2 = "";
map<int, int> freq1, freq2;
for (int i = x; i <= y; i++) {
s1.push_back(a[i]);
s2.push_back(b[i]);
freq1[a[i]]++;
freq2[b[i]]++;
}
string o = "ATC";
for (char c : o) {
if (freq1[c] != freq2[c]) return -1;
}
int diff = 0;
for (int i = 0; i < dist; i++) {
if (s1[i] != s2[i]) diff++;
}
if (diff == 2) return 1;
if (diff == 0) return 0;
if (diff == 1) return -1;
if (diff == 3) return 2;
}
int diff = pref[y + 1] - pref[x];
int freqa1 = preff[0][y + 1] - preff[0][x];
int freqa2 = pref2[0][y + 1] - pref2[0][x];
int freqt1 = preff[1][y + 1] - preff[1][x];
int freqt2 = pref2[1][y + 1] - pref2[1][x];
//for(int i=0; i<pref2[1].size(); i++)cout << pref2[1][i]<< " ";
//cout << endl;
//cout << freqt1 <<" "<< freqt2 <<" " <<freqa1<< " " << freqa2 << endl;
if ( freqt1 != freqt2 || freqa1 != freqa2) return -1;
return diff / 2;
return 0;
}
# | 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... |