Submission #657890

#TimeUsernameProblemLanguageResultExecution timeMemory
657890benjaminkleynMutating DNA (IOI21_dna)C++17
0 / 100
30 ms4492 KiB
#include <bits/stdc++.h> #include "dna.h" using namespace std; typedef long long ll; int n, ac[100001], at[100001], ct[100001]; int a[100001], c[100001], t[100001]; void init(string A, string B) { n = A.size(); a[0] = c[0] = t[0] = ac[0] = at[0] = ct[0] = 0; for (int i = 0; i < n; i++) { a[i + 1] = a[i] + (A[i] == 'A') - (B[i] == 'A'); c[i + 1] = c[i] + (A[i] == 'C') - (B[i] == 'C'); t[i + 1] = t[i] + (A[i] == 'T') - (B[i] == 'T'); ac[i + 1] = ac[i], at[i + 1] = at[i], ct[i + 1] = ct[i]; ac[i + 1] += ((A[i] == 'A' && B[i] == 'C') || (A[i] == 'C' && B[i] == 'A')); at[i + 1] += ((A[i] == 'C' && B[i] == 'T') || (A[i] == 'T' && B[i] == 'C')); ct[i + 1] += ((A[i] == 'C' && B[i] == 'T') || (A[i] == 'C' && B[i] == 'T')); ac[i + 1] += ((A[i] == 'T' && B[i] != 'T') || (A[i] != 'T' && B[i] == 'T')) * 2; at[i + 1] += ((A[i] == 'C' && B[i] != 'C') || (A[i] != 'C' && B[i] == 'C')) * 2; ct[i + 1] += ((A[i] == 'A' && B[i] != 'A') || (A[i] != 'A' && B[i] == 'A')) * 2; } } int get_distance(int x, int y) { if (a[y + 1] - a[x] != 0) return -1; if (c[y + 1] - c[x] != 0) return -1; if (t[y + 1] - t[x] != 0) return -1; return min({ac[y + 1] - ac[x], at[y + 1] - at[x], ct[y + 1] - ct[y]}) / 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...