Submission #1236961

#TimeUsernameProblemLanguageResultExecution timeMemory
1236961i_love_mritiDNA 돌연변이 (IOI21_dna)C++20
43 / 100
1594 ms2376 KiB
#include <bits/stdc++.h>
#include "dna.h"
using namespace std;

const int mxN = 2e5 + 1000;

string A, B;

void init(string a, string b){
	A = a, B = b;
}

int get_distance(int x, int y){
	int a = 0, c = 0, t = 0, good = 0, at = 0, ta = 0, ac = 0, ca = 0, tc = 0, ct = 0;
	for(int i = x; i <= y; ++i){
		a += A[i] == 'A';
		a -= B[i] == 'A';
		c += A[i] == 'C';
		c -= B[i] == 'C';
		t += A[i] == 'T';
		t -= B[i] == 'T';
		if(A[i] == 'A' && B[i] == 'T') ++at;
		else if(A[i] == 'T' && B[i] == 'A') ++ta;
		else if(A[i] == 'A' && B[i] == 'C') ++ac;
		else if(A[i] == 'C' && B[i] == 'A') ++ca;
		else if(A[i] == 'C' && B[i] == 'T') ++ct;
		else if(A[i] == 'T' && B[i] == 'C') ++tc;
		else ++good;
	}
	if(a == 0 && c == 0 && t == 0){
		if(good == (y - x + 1)) return 0;
		return min(at, ta) + min(ac, ca) + min(tc, ct) + max(((y - x + 1) - min(at, ta) * 2 - min(ac, ca) * 2 - min(tc, ct) * 2 - good - 1), 0);
	}else{
		return -1;
	}
}

/*int main(){
	#ifndef ONLINE_JUDGE
	freopen("inp.in", "r", stdin);
	freopen("output.out", "w", stdout);
	#endif

	ios_base::sync_with_stdio(0);
	cin.tie(nullptr); cout.tie(nullptr);

	init("ATACAT", "ACTATA");

	cout << get_distance(1, 3) << endl;

	return 0;
}*/
#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...