Submission #1175255

#TimeUsernameProblemLanguageResultExecution timeMemory
1175255raspyMutating DNA (IOI21_dna)C++20
0 / 100
23 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]; if (tr_dnk[0] < tr_dnk[2]) swap(tr_dnk[0], tr_dnk[2]); if (tr_dnk[1] < tr_dnk[4]) swap(tr_dnk[1], tr_dnk[4]); if (tr_dnk[3] < tr_dnk[5]) swap(tr_dnk[3], tr_dnk[5]); 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]) != (tr_dnk[1]) || (tr_dnk[0]) != (tr_dnk[3])) return -1; int rez = (tr_dnk[2]) + (tr_dnk[4]) + (tr_dnk[5]); rez += tr_dnk[0]; return rez; }
#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...