Submission #1166849

#TimeUsernameProblemLanguageResultExecution timeMemory
1166849ChocoMutating DNA (IOI21_dna)C++20
0 / 100
31 ms13888 KiB
#include "dna.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define fori(x,y,z) for(ll x=y;x<=z;x++)
vector<vector<ll>>cnt,cnt1;
vector<ll>diff;
void init(string a, string b) {
	ll n=a.size();
	cnt.resize(n+10);
	cnt1.resize(n+10);
	diff.assign(n+10,0);
	fori(i,0,n){
		cnt[i].resize(3,0);
		cnt1[i].resize(3,0);
	}
	fori(i,0,n-1){
		fori(j,0,2){
			cnt[i+1][j]=cnt[i][j];
			cnt1[i+1][j]=cnt[i][j];
		}
		diff[i+1]=diff[i];
		if(a[i]=='A')
		cnt[i+1][0]++;
		else if(a[i]=='C')
		cnt[i+1][1]++;
		else
		cnt[i+1][2]++;
		if(b[i]=='A')
		cnt1[i+1][0]++;
		else if(b[i]=='C')
		cnt1[i+1][1]++;
		else
		cnt1[i+1][2]++;
		if(a[i]!=b[i])
		diff[i+1]++;
	}
}
int get_distance(int x, int y) {
	x++;
	y++;
	bool okay=1;
	fori(i,0,2){
		if(cnt[y][i]-cnt[x-1][i]!=cnt1[y][i]-cnt1[x-1][i])
		okay=0;
	}
	if(okay==0)
	return -1;
	return diff[y]-diff[x-1]-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...