Submission #1181438

#TimeUsernameProblemLanguageResultExecution timeMemory
1181438petezaMutating DNA (IOI21_dna)C++20
0 / 100
21 ms5632 KiB
#include "dna.h" #include <bits/stdc++.h> using namespace std; int n; int qs[100005][3][3]; int vals[3][3]; int conv(char x) { if(x == 'A') return 0; if(x == 'T') return 1; return 2; } void init(std::string a, std::string b) { n = a.size(); for(int i=1;i<=n;i++) { for(int j=0;j<3;j++) { for(int k=0;k<3;k++) { qs[i][j][k] = qs[i-1][j][k]; } } qs[i][conv(a[i-1])][conv(b[i-1])]++; } } int get_distance(int x, int y) { y++; for(int j=0;j<3;j++) { for(int k=0;k<3;k++) vals[j][k] = qs[y][j][k] - qs[x][j][k]; } int v01, v02, v12; v01 = min(vals[0][1], vals[1][0]); v02 = min(vals[0][2], vals[2][0]); v12 = min(vals[1][2], vals[2][1]); int ans = v01 + v02 + v12; vals[0][1] -= v01; vals[1][0] -= v01; vals[0][2] -= v02; vals[2][0] -= v02; vals[1][2] -= v12; vals[2][1] -= v12; if(vals[0][1] == vals[1][2] && vals[1][2] == vals[2][0]) { ans += llabs(vals[0][1]) * 2; } else return -1; return ans; }
#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...