Submission #565986

#TimeUsernameProblemLanguageResultExecution timeMemory
565986FairyWinxMutating DNA (IOI21_dna)C++17
0 / 100
48 ms2956 KiB
#include "dna.h"
#include <bits/stdc++.h>

#define all(a) a.begin(), a.end()

using namespace std;

vector<int> a, b;

void init(std::string _a, std::string _b) {
	a.resize(_a.size());
	b.resize(_b.size());
	for (int i = 0; i < (int) _a.size(); ++i) {
		if (_a[i] == 'A') {
			a[i] = 0;
		} else if (_a[i] == 'T') {
			a[i] = 1;
		} else {
			a[i] = 2;
		}
		if (_b[i] == 'A') {
			b[i] = 0;
		} else if (_b[i] == 'T') {
			b[i] = 1;
		} else {
			b[i] = 2;
		}
	}
}

int get_distance(int x, int y) {
	int sum = 0;
	map<pair<int, int>, int> tmp;
	multiset<int> s1, s2;
	for (int i = x; i <= y; ++i) {
		s1.insert(a[i]);
		s2.insert(b[i]);
		if (a[i] != b[i]) {
			int a1 = a[i], a2 = b[i];
			sum += 2;
			if (tmp[{a2, a1}]) {
				--tmp[{a2, a1}];
				--sum;
			} else {
				++tmp[{a1, a2}];
			}

		}
	}
	if (s1 != s2) {
		return -1;
	}
	return sum;
}
#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...