Submission #1232645

#TimeUsernameProblemLanguageResultExecution timeMemory
1232645TimoshMutating DNA (IOI21_dna)C++20
100 / 100
24 ms6152 KiB
#include "bits/stdc++.h"
#include "dna.h"

using namespace std;

vector<vector<int>> pf(9);
int n;

void init(std::string a, std::string b)
{
	n = a.size();
	for (auto &i : pf)
		i.resize(n + 1);
	string s = "ATC";
	for (int i = 0; i < n; i++)
		for (int j = 0; j < 9; j++)
			pf[j][i + 1] = pf[j][i] + (a[i] == s[j % 3] && b[i] == s[j / 3]);
}

int get_distance(int x, int y)
{
	vector<int> q(9);
	for (int i = 0; i < 9; i++)
		q[i] = pf[i][y + 1] - pf[i][x];
	int AC = q[6]; // 0 2
	int CA = q[2]; // 2 0
	int TA = q[1]; // 1 0
	int AT = q[3]; // 0 1
	int CT = q[5]; // 2 1
	int TC = q[7]; // 1 2
	if (AC + AT - CA - TA != 0)
		return -1;
	if (CA + CT - AC - TC != 0)
		return -1;
	if (TA + TC - AT - CT != 0)
		return -1;
	int ans = min(AC, CA) + min(AT, TA) + min(CT, TC);
	return ans + 2 * abs(AC - CA);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...