제출 #1175275

#제출 시각아이디문제언어결과실행 시간메모리
1175275raspyDNA 돌연변이 (IOI21_dna)C++20
35 / 100
28 ms4880 KiB
#include "dna.h" #include <bits/stdc++.h> using namespace std; map<string, int> mp; int n; int kum[8][100005]; const string dnk[8] = {"AC", "AT", "CA", "CT", "TA", "TC"}; const int LIK = 6; void init(string a, string b) { for (int i = 0; i < LIK; i++) mp[dnk[i]] = i; n = a.size(); for (int i = 1; i <= n; i++) { string tr(1, a[i-1]); tr += b[i-1]; for (int ix = 0; ix < LIK; ix++) kum[ix][i] = kum[ix][i-1]; if (a[i-1] != b[i-1]) kum[mp[tr]][i]++; } } int tr_dnk[8]; int get_distance(int x, int y) { for (int i = 0; i < LIK; i++) tr_dnk[i] = kum[i][y+1]-kum[i][x]; tr_dnk[0] -= tr_dnk[2]; // ac, ca tr_dnk[1] -= tr_dnk[4]; // at, ta tr_dnk[3] -= tr_dnk[5]; // ct, tc if (tr_dnk[0] == 0 && tr_dnk[1] == 0 && tr_dnk[3] == 0) return (tr_dnk[2]) + (tr_dnk[4]) + (tr_dnk[5]); if (tr_dnk[0] == -tr_dnk[1] && tr_dnk[0] == tr_dnk[3] && tr_dnk[0] > 0) { exit(-1); return 2+(tr_dnk[2]) + (tr_dnk[4]-1) + (tr_dnk[5]); } if (tr_dnk[0] == -tr_dnk[1] && tr_dnk[0] == tr_dnk[3]) { return 2+(tr_dnk[2]-1) + (tr_dnk[4]) + (tr_dnk[5]-1); } return -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...