제출 #1303999

#제출 시각아이디문제언어결과실행 시간메모리
1303999nekolieDNA 돌연변이 (IOI21_dna)C++20
100 / 100
22 ms5360 KiB
#include <bits/stdc++.h> using namespace std; const int M = 100001; int ile[M][7]; void init(string a, string b) { for (int i = 0; i < a.size(); i++) { for (int j = 0; j < 7; j++) ile[i+1][j] = ile[i][j]; if (a[i] == b[i]) ile[i+1][0]++; else if (a[i] == 'A' && b[i] == 'C') ile[i+1][1]++; else if (a[i] == 'A' && b[i] == 'T') ile[i+1][2]++; else if (a[i] == 'C' && b[i] == 'A') ile[i+1][3]++; else if (a[i] == 'C' && b[i] == 'T') ile[i+1][4]++; else if (a[i] == 'T' && b[i] == 'A') ile[i+1][5]++; else if (a[i] == 'T' && b[i] == 'C') ile[i+1][6]++; } } int get_distance(int x, int y) { int cnt[7], pom, odp = 0; for (int i = 0; i < 7; i++) cnt[i] = ile[y+1][i]-ile[x][i]; pom = min(cnt[1],cnt[3]), cnt[1] -= pom, cnt[3] -= pom, odp += pom; pom = min(cnt[2],cnt[5]), cnt[2] -= pom, cnt[5] -= pom, odp += pom; pom = min(cnt[4],cnt[6]), cnt[4] -= pom, cnt[6] -= pom, odp += pom; if (cnt[2] != cnt[3] || cnt[3] != cnt[6] || cnt[1] != cnt[4] || cnt[4] != cnt[5]) return -1; return odp + 2*(*max_element(cnt+1,cnt+7)); }
#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...