제출 #1287464

#제출 시각아이디문제언어결과실행 시간메모리
1287464putthi_usMutating DNA (IOI21_dna)C++20
0 / 100
20 ms5084 KiB
#include "dna.h"
#include<bits/stdc++.h>
using namespace std;
vector<int> Aa,Ta,Ca,Ab,Tb,Cb,same;
void init(std::string a, std::string b) {
	int n=a.length();
	Aa.resize(n+1);
	Ta.resize(n+1);
	Ca.resize(n+1);
	Ab.resize(n+1);
	Tb.resize(n+1);
	Cb.resize(n+1);
	same.resize(n+1);
	Aa[0]=Ta[0]=Ca[0]=Ab[0]=Tb[0]=Cb[0]=same[0]=0;
	for(int i=0;i<n;i++){
		Aa[i+1]=Aa[i];
		Ta[i+1]=Ta[i];
		Ca[i+1]=Ca[i];
		Ab[i+1]=Ab[i];
		Tb[i+1]=Tb[i];
		Cb[i+1]=Cb[i];
		same[i+1]=same[i];
		if(a[i]=='A')Aa[i+1]++;
		else if(a[i]=='T')Ta[i+1]++;
		else if(a[i]=='C')Ca[i+1]++;
		
		if(b[i]=='A')Ab[i+1]++;
		else if(b[i]=='T')Tb[i+1]++;
		else if(b[i]=='C')Cb[i+1]++;

		if(a[i]==b[i]){
			same[i+1]++;
		}
	}
}

int get_distance(int x, int y) {
	if(Aa[y+1]-Aa[x]==Ab[y+1]-Ab[x]&&Ta[y+1]-Ta[x]==Tb[y+1]-Tb[x]&&Ca[y+1]-Ca[x]==Cb[y+1]-Cb[x]){
		return y-x-same[y+1]+same[x];
	}
	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...