Submission #1198124

#TimeUsernameProblemLanguageResultExecution timeMemory
1198124HappyCapybaraMutating DNA (IOI21_dna)C++17
100 / 100
51 ms8008 KiB
#include "dna.h" #include<bits/stdc++.h> using namespace std; vector<vector<int>> ps; void init(string a, string b){ int n = a.size(); ps.resize(n+1, vector<int>(6, 0)); for (int i=0; i<n; i++){ ps[i+1][0] = ps[i][0]+(a[i] == 'A' && b[i] == 'T'); ps[i+1][1] = ps[i][1]+(a[i] == 'T' && b[i] == 'A'); ps[i+1][2] = ps[i][2]+(a[i] == 'A' && b[i] == 'C'); ps[i+1][3] = ps[i][3]+(a[i] == 'C' && b[i] == 'A'); ps[i+1][4] = ps[i][4]+(a[i] == 'T' && b[i] == 'C'); ps[i+1][5] = ps[i][5]+(a[i] == 'C' && b[i] == 'T'); } } int get_distance(int x, int y){ vector<int> v(6); for (int i=0; i<6; i++) v[i] = ps[y+1][i]-ps[x][i]; int a = min(v[0], v[1])+min(v[2], v[3])+min(v[4], v[5]); if (v[0]+v[2] != v[1]+v[3] || v[1]+v[4] != v[0]+v[5] || v[3]+v[5] != v[2]+v[4]) return -1; return a+(v[0]+v[1]+v[2]+v[3]+v[4]+v[5]-2*a)/3*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...