Submission #440612

#TimeUsernameProblemLanguageResultExecution timeMemory
440612BT21tataDNA 돌연변이 (IOI21_dna)C++17
71 / 100
1589 ms4256 KiB
#include "dna.h"
#include "bits/stdc++.h"

using namespace std;

int a[100005], b[100005];

void init(string A, string B)
{
	for(int i=0; i<(int)A.length(); i++)
	{
		if(A[i]=='C') a[i]=1;
		else if(A[i]=='T') a[i]=2;
		if(B[i]=='C') b[i]=1;
		else if(B[i]=='T') b[i]=2;
	}
}

int get_distance(int x, int y)
{
	int cnt[3][3], cnt1[3]={0,0,0}, cnt2[3]={0,0,0}, num=0, e, ans=0;
	memset(cnt, 0, sizeof(cnt));
	for(int i=x; i<=y; i++)
	{
		cnt[a[i]][b[i]]++;
		cnt1[a[i]]++;
		cnt2[b[i]]++;
	}
	if(cnt1[0]!=cnt2[0] or cnt1[1]!=cnt2[1] or cnt1[2]!=cnt2[2]) return -1;
	for(int i=0; i<3; i++)
		for(int j=i+1; j<3; j++)
		{
			e=min(cnt[i][j], cnt[j][i]);
			num+=e;
			ans+=max(cnt[i][j], cnt[j][i])-e;
		}
	return num+ans/3*2;
}
#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...