Submission #1189599

#TimeUsernameProblemLanguageResultExecution timeMemory
1189599North1304Mutating DNA (IOI21_dna)C++20
100 / 100
20 ms5028 KiB
#include <bits/stdc++.h> #include "dna.h" using namespace std; const int N = 1e5 + 1; int at[N] , ta[N] , ac[N] , ca[N] , tc[N] , ct[N]; void init(string a, string b) { int n = a.size(); a = ' ' + a; b = ' ' + b; for (int i=1;i<=n;i++) { at[i] = at[i-1] + (a[i]=='A' && b[i]=='T'); ta[i] = ta[i-1] + (a[i]=='T' && b[i]=='A'); ac[i] = ac[i-1] + (a[i]=='A' && b[i]=='C'); ca[i] = ca[i-1] + (a[i]=='C' && b[i]=='A'); tc[i] = tc[i-1] + (a[i]=='T' && b[i]=='C'); ct[i] = ct[i-1] + (a[i]=='C' && b[i]=='T'); } } int get_distance(int x, int y) { x++; y++; int nowat = at[y] - at[x-1]; int nowta = ta[y] - ta[x-1]; int nowac = ac[y] - ac[x-1]; int nowca = ca[y] - ca[x-1]; int nowtc = tc[y] - tc[x-1]; int nowct = ct[y] - ct[x-1]; int minat = min(nowat, nowta); int minac = min(nowac, nowca); int mintc = min(nowtc, nowct); nowat -= minat; nowta -= minat; nowac -= minac; nowca -= minac; nowtc -= mintc; nowct -= mintc; if (nowat==nowtc && nowtc==nowca && nowct==nowta && nowta==nowac) return minat + minac + mintc + max(nowat, nowta) * 2; else return -1; return 0; }
#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...