Submission #1216851

#TimeUsernameProblemLanguageResultExecution timeMemory
1216851islam_2010Mutating DNA (IOI21_dna)C++20
35 / 100
19 ms3916 KiB
#pragma GCC optimize("O3") #include "dna.h" #include <bits/stdc++.h> using namespace std; string s, c; const int sz = 100005; int pref_diff[sz], pref_A_s[sz], pref_A_c[sz]; void init(string a, string b){ s = a; c = b; int n = s.size(); pref_diff[0] = (s[0] != c[0]); pref_A_s[0] = (s[0] == 'A'); pref_A_c[0] = (c[0] == 'A'); for (int i = 1; i < n; ++i) { pref_diff[i] = pref_diff[i-1] + (s[i] != c[i]); pref_A_s[i] = pref_A_s[i-1] + (s[i] == 'A'); pref_A_c[i] = pref_A_c[i-1] + (c[i] == 'A'); } } int get_distance(int x, int y){ int a1 = pref_A_s[y] - (x > 0 ? pref_A_s[x-1] : 0); int a2 = pref_A_c[y] - (x > 0 ? pref_A_c[x-1] : 0); if (a1 != a2) return -1; bool match = true; for (int i = x; i <= y; ++i) { if (s[i] != c[i]) { match = false; break; } } if (match) return 0; int mismatch = pref_diff[y] - (x > 0 ? pref_diff[x-1] : 0); return (mismatch + 1) / 2; }
#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...