제출 #1355176

#제출 시각아이디문제언어결과실행 시간메모리
1355176Charizard2021Mutating DNA (IOI21_dna)C++20
22 / 100
1595 ms2552 KiB
#include "dna.h"
#include<bits/stdc++.h>
using namespace std;
int n;
string A;
string B;
void init(string a, string b){
	n = (int)a.size();
	A = a;
	B = b;
}
int get_distance(int x, int y){
	map<char, int> mp;
	map<char, int> mp2;
	string C = "";
	string D = "";
	for(int i = x; i <= y; i++){
		mp[A[i]]++;
		mp2[B[i]]++;
		C += A[i];
		D += B[i];
	}
	if(mp['A'] == mp2['A'] && mp['C'] == mp2['C'] && mp['T'] == mp2['T']){
		map<pair<char, char>, int> mp;
		int m = y - x + 1;
		for(int i = 0; i < m; i++){
			if(C[i] == D[i]){
				continue;
			}
			else{
				mp[make_pair(C[i], D[i])]++;
			}
		}
		int val1 = min(mp[make_pair('A', 'C')], mp[make_pair('C', 'A')]);
		int val2 = min(mp[make_pair('A', 'T')], mp[make_pair('T', 'A')]);
		int val3 = min(mp[make_pair('T', 'C')], mp[make_pair('C', 'T')]);
		mp[make_pair('A', 'C')] -= val1;
		mp[make_pair('C', 'A')] -= val1;
		mp[make_pair('A', 'T')] -= val2;
		mp[make_pair('T', 'A')] -= val2;
		mp[make_pair('T', 'C')] -= val3;
		mp[make_pair('C', 'T')] -= val3;
		int sum = mp[make_pair('A', 'C')] + mp[make_pair('C', 'A')] + mp[make_pair('A', 'T')] + mp[make_pair('T', 'A')] + mp[make_pair('T', 'C')] + mp[make_pair('C', 'T')];
		sum *= 2/3;
		return sum + val1 + val2 + val3;
	}
	else{
		return -1;
	}
}
#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...