Submission #1175264

#TimeUsernameProblemLanguageResultExecution timeMemory
1175264raspyMutating DNA (IOI21_dna)C++20
0 / 100
22 ms4608 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]; 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] == 1 && tr_dnk[1] == -1 && tr_dnk[3] == 1) return 2+(tr_dnk[2]) + (tr_dnk[4]-1) + (tr_dnk[5]); if (tr_dnk[0] == -1 && tr_dnk[1] == 1 && tr_dnk[3] == -1) 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...