Submission #1197451

#TimeUsernameProblemLanguageResultExecution timeMemory
1197451segfault_ikuyoDNA 돌연변이 (IOI21_dna)C++20
100 / 100
22 ms4876 KiB
#include "dna.h"
#include <bits/stdc++.h>
using namespace std;

int pfx[100005][6];
int ans,cnt[6];

void init(std::string a,std::string b){
	for(int i=0;i<a.size();i++){
		pfx[i+1][0]=pfx[i][0]+(a[i]=='A'&b[i]=='T');
		pfx[i+1][1]=pfx[i][1]+(a[i]=='A'&b[i]=='C');
		pfx[i+1][2]=pfx[i][2]+(a[i]=='T'&b[i]=='A');
		pfx[i+1][3]=pfx[i][3]+(a[i]=='T'&b[i]=='C');
		pfx[i+1][4]=pfx[i][4]+(a[i]=='C'&b[i]=='A');
		pfx[i+1][5]=pfx[i][5]+(a[i]=='C'&b[i]=='T');
	}
}

int get_distance(int x,int y){
	y++;
	for(int i=0;i<6;i++) cnt[i]=pfx[y][i]-pfx[x][i];
	if(cnt[0]+cnt[1]!=cnt[2]+cnt[4]) return -1;
	if(cnt[2]+cnt[3]!=cnt[0]+cnt[5]) return -1;
	if(cnt[4]+cnt[5]!=cnt[1]+cnt[3]) return -1;
	ans=min(cnt[0],cnt[2])+min(cnt[1],cnt[4])+min(cnt[3],cnt[5]);
	return ans+(max(cnt[0],cnt[2])+max(cnt[1],cnt[4])+max(cnt[3],cnt[5])-ans<<1)/3;
}
#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...