Submission #484625

#TimeUsernameProblemLanguageResultExecution timeMemory
484625MrDebooMutating DNA (IOI21_dna)C++17
0 / 100
30 ms5060 KiB
#include "dna.h"
#include "bits/stdc++.h"
using namespace std;
string a,b;
int n;
int pre[100000];
int g[2][3][100000];
void init(std::string A, std::string B) {
	a=A;
	b=B;
	n=a.size();
	for(int i=0;i<2;i++){
		for(int w=0;w<3;w++){
			g[i][w][0]=0;
		}
	}
	for(int i=0;i<n;i++){
		pre[i]=(a[i]!=b[i]);
		if(i){
			pre[i]+=pre[i-1];
			for(int w=0;w<6;w++)g[w%2][w%3][i]=g[w%2][w%3][i-1];
		}
		g[0][(a[i]=='A'?0:1+(a[i]=='T'))][i]++;
		g[1][(b[i]=='A'?0:1+(b[i]=='T'))][i]++;
	}
}

int get_distance(int l, int r) {
	return ((g[0][1][r]-(l?g[0][1][l-1]:0)!=g[1][1][r]-(l?g[1][1][l-1]:0)||g[0][0][r]-(l?g[0][0][l-1]:0)!=g[1][0][r]-(l?g[1][0][l-1]:0)||(g[0][2][r]-(l?g[0][2][l-1]:0)!=g[1][2][r]-(l?g[1][2][l-1]:0)))?-1:((pre[r]-(l?pre[l-1]:0))/3)*2+((pre[r]-(l?pre[l-1]:0))%3)*2);
}
//AACATT
//AATCAC
#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...