Submission #1354897

#TimeUsernameProblemLanguageResultExecution timeMemory
1354897AMnuMutating DNA (IOI21_dna)C++20
100 / 100
19 ms4216 KiB
#include "dna.h"
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 1e5+5;

int P[MAXN][4];

void init(string a,string b) {
	for (int i=a.size()-1;i>=0;i--) {
		for (int j=0;j<4;j++) P[i][j] = P[i+1][j];
		int x = (a[i]-b[i]+21)%3;
		if (!x) continue;
		P[i][3]++;
		P[i][(a[i]+b[i])%3] += x*2-3;
	}
}

int get_distance(int x,int y) {
	int a = P[x][0]-P[y+1][0];
	for (int i=1;i<3;i++) {
		if (P[x][i]-P[y+1][i] != a) return -1;
	}
	return (P[x][3]-P[y+1][3]+abs(a))>>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...