제출 #1131801

#제출 시각아이디문제언어결과실행 시간메모리
1131801MathiasDNA 돌연변이 (IOI21_dna)C++20
100 / 100
25 ms7492 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define ull unsigned long long
#define pb push_back
#define fi first
#define sc second
#define vi vector<int>
#define pii pair<int,int>
#define vpi vector<pair<int,int> >
#define mp make_pair 
const ll MOD1 = 1e9+7;
const ll MOD2 = 998244353;
const ll MOD3 = 1e9+93;
const ll MOD4 = 1e9+97;
const int INF = 1e9+7;
const int BASE = 1<<20;
const int LOG = 20;
const int ALF = 27;
const int MAXN = 1e6+7;
const int MAXNN = 1e3+7;
int p1[3][MAXN], p2[3][MAXN], m[6][MAXN];
void init(string a,string b){
	a="%"+a, b="%"+b;
	for(int i=1;i<a.size();i++){
		for(int j=0;j<3;j++) p1[j][i]=p1[j][i-1];
		if(a[i]=='A') p1[0][i]++;
		else if(a[i]=='C') p1[1][i]++;
		else p1[2][i]++;
	} 
	for(int i=1;i<b.size();i++){
		for(int j=0;j<3;j++) p2[j][i]=p2[j][i-1];
		if(b[i]=='A') p2[0][i]++;
		else if(b[i]=='C') p2[1][i]++;
		else p2[2][i]++;
	}
	for(int i=1;i<a.size();i++){
		for(int j=0;j<6;j++) m[j][i]=m[j][i-1];
		if(a[i]=='A' and b[i]=='T') m[0][i]++;
		if(a[i]=='T' and b[i]=='A') m[1][i]++;
		if(a[i]=='C' and b[i]=='A') m[2][i]++;
		if(a[i]=='A' and b[i]=='C') m[3][i]++;
		if(a[i]=='T' and b[i]=='C') m[4][i]++;
		if(a[i]=='C' and b[i]=='T') m[5][i]++;
	} 		
}
int get_distance(int x,int y){
	x++, y++;
	int x1,x2,x3,x4,x5,x6,x7,x8,x9;
	for(int i=0;i<3;i++) if(p1[i][y]-p1[i][x-1]!=p2[i][y]-p2[i][x-1]) return -1;
	x1=m[0][y]-m[0][x-1];
	x2=m[1][y]-m[1][x-1];
	x3=m[2][y]-m[2][x-1];
	x4=m[3][y]-m[3][x-1];
	x5=m[4][y]-m[4][x-1];
	x6=m[5][y]-m[5][x-1];
	x7=max(x1,x2)-min(x1,x2);
	x8=max(x3,x4)-min(x3,x4);
	x9=max(x5,x6)-min(x5,x6);
	return min(x1,x2)+min(x3,x4)+min(x5,x6)+(2*(x7+x8+x9)/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...