Submission #618740

#TimeUsernameProblemLanguageResultExecution timeMemory
618740happypotatoMutating DNA (IOI21_dna)C++17
100 / 100
49 ms9736 KiB
#include "dna.h" #include <bits/stdc++.h> using namespace std; const int mxN = 1e5 + 1; int ps[mxN][3][3]; int check[2][mxN][3]; unordered_map<char, int> conv = {{'A', 0}, {'C', 1}, {'T', 2}}; int n; void init(string a, string b) { n = a.length(); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { ps[0][i][j] = 0; } check[0][0][i] = check[1][0][i] = 0; } for (int i = 1; i <= n; i++) { for (int j = 0; j < 3; j++) { for (int k = 0; k < 3; k++) { ps[i][j][k] = ps[i - 1][j][k]; } check[0][i][j] = check[0][i - 1][j]; check[1][i][j] = check[1][i - 1][j]; } ps[i][conv[a[i - 1]]][conv[b[i - 1]]]++; check[0][i][conv[a[i - 1]]]++; check[1][i][conv[b[i - 1]]]++; } } int get_distance(int x, int y) { x++; y++; for (int i = 0; i < 3; i++) { if (check[0][y][i] - check[0][x - 1][i] != check[1][y][i] - check[1][x - 1][i]) { return -1; } } int diff[6]; diff[0] = ps[y][0][1] - ps[x - 1][0][1]; diff[1] = ps[y][0][2] - ps[x - 1][0][2]; diff[2] = ps[y][1][0] - ps[x - 1][1][0]; diff[3] = ps[y][1][2] - ps[x - 1][1][2]; diff[4] = ps[y][2][0] - ps[x - 1][2][0]; diff[5] = ps[y][2][1] - ps[x - 1][2][1]; int ans = 0; int cur; // 01 cur = min(diff[0], diff[2]); diff[0] -= cur; diff[2] -= cur; ans += cur; // 02 cur = min(diff[1], diff[4]); diff[1] -= cur; diff[4] -= cur; ans += cur; // 12 cur = min(diff[3], diff[5]); diff[3] -= cur; diff[5] -= cur; ans += cur; // 012 cur = min({diff[0], diff[3], diff[4]}); diff[0] -= cur; diff[3] -= cur; diff[4] -= cur; ans += cur * 2; // 210 cur = min({diff[5], diff[2], diff[1]}); diff[5] -= cur; diff[2] -= cur; diff[1] -= cur; ans += cur * 2; 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...