#include "dna.h"
#include <unordered_set>
#include <unordered_map>
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <string>
#include <iomanip>
#include <numeric>
using namespace std;
string as;
string ab;
vector<int> tc;
vector<int> ct;
vector<int> ta;
vector<int> at;
vector<int> ac;
vector<int> ca;
void init(std::string a, std::string b) {
as = a;
ab = b;
for (size_t i = 0; i < a.length(); i++) {
if (as[i] == 'T' && ab[i] == 'C') tc.push_back(i);
else if (as[i] == 'C' && ab[i] == 'T') ct.push_back(i);
else if (as[i] == 'T' && ab[i] == 'A') ta.push_back(i);
else if (as[i] == 'A' && ab[i] == 'T') at.push_back(i);
else if (as[i] == 'A' && ab[i] == 'C') ac.push_back(i);
else if (as[i] == 'C' && ab[i] == 'A') ca.push_back(i);
}
}
int get_distance(int x, int y) {
string p1 = ab.substr(x,y-x+1);
string p2 = as.substr(x,y-x+1);
sort(p1.begin(),p1.end());
sort(p2.begin(),p2.end());
if (p1 == p2) {
int tcn = 0;
int ctn = 0;
int tanm = 0;
int atnm = 0;
int acn = 0;
int can = 0;
for (size_t i = 0; i < tc.size();i++) {
if (tc[i] >= x && tc[i] <= y) {
tcn++;
}
}
for (size_t i = 0; i < ct.size();i++) {
if (ct[i] >= x && ct[i] <= y) {
ctn++;
}
}
for (size_t i = 0; i < ta.size();i++) {
if (ta[i] >= x && ta[i] <= y) {
tanm++;
}
}
for (size_t i = 0; i < at.size();i++) {
if (at[i] >= x && at[i] <= y) {
atnm++;
}
}
for (size_t i = 0; i < ac.size();i++) {
if (ac[i] >= x && ac[i] <= y) {
acn++;
}
}
for (size_t i = 0; i < ca.size();i++) {
if (ca[i] >= x && ca[i] <= y) {
can++;
}
}
int ans = 0;
std::cout << tcn << " " << ctn << " " << acn << " " << can << " " << tanm << " " << atnm << std::endl;
int tcmk = min(tcn,ctn);
tcn -= tcmk;
ctn -= tcmk;
int tamk = min(tanm,atnm);
tanm -= tamk;
atnm -= tamk;
int camk = min(can,acn);
acn -= camk;
acn -= camk;
ans += (camk+tamk+tcmk);
ans += ((tcn+ctn+acn+can+tanm+atnm)/3)*2;
return ans;
} else {
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... |