# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
437372 | 2021-06-26T08:37:11 Z | Mohammed_Atalah | DNA 돌연변이 (IOI21_dna) | C++17 | 131 ms | 12800 KB |
#include "dna.h" #include <bits/stdc++.h> using namespace std; vector<int64_t> T1; vector<int64_t> T2; vector<int64_t> A1; vector<int64_t> A2; vector<int64_t> C1; vector<int64_t> C2; vector<int64_t> AC; vector<int64_t> CA; vector<int64_t> AT; vector<int64_t> TA; vector<int64_t> CT; vector<int64_t> TC; vector<int64_t> same; void init(std::string a, std::string b) { int64_t len = a.size(); T1.resize(len + 1); T2.resize(len + 1); A1.resize(len + 1); A2.resize(len + 1); C1.resize(len + 1); C2.resize(len + 1); TA.resize(len + 1); TC.resize(len + 1); AC.resize(len + 1); AT.resize(len + 1); CT.resize(len + 1); CA.resize(len + 1); same.resize(len + 1); int64_t currA1 = 0; int64_t currT1 = 0; int64_t currA2 = 0; int64_t currT2 = 0; int64_t currC1 = 0; int64_t currC2 = 0; int64_t currsame = 0; int64_t currAT = 0; int64_t currTA = 0; int64_t currAC = 0; int64_t currTC = 0; int64_t currCA = 0; int64_t currCT = 0; for (int i = 0; i < len; i++) { if (a[i] == 'A') { currA1++; } else if (a[i] == 'T') { currT1++; } else if (a[i] == 'C') { currC1++; } if (b[i] == 'A') { currA2++; } else if (b[i] == 'T') { currT2++; } else if (b[i] == 'C') { currC2++; } if (a[i] == b[i]) { currsame++; } if (a[i] == 'A' && b[i] == 'T') { currAT++; } else if (a[i] == 'A' && b[i] == 'C') { currAC++; } else if (a[i] == 'C' && b[i] == 'A') { currCA++; } else if (a[i] == 'C' && b[i] == 'T') { currCT++; } else if (a[i] == 'T' && b[i] == 'A') { currTA++; } else if (a[i] == 'T' && b[i] == 'C') { currTC++; } A1[i + 1] = currA1; T1[i + 1] = currT1; A2[i + 1] = currA2; T2[i + 1] = currT2; C1[i + 1] = currC1; C2[i + 1] = currC2; AC[i + 1] = currAC; TA[i + 1] = currTA; AT[i + 1] = currAT; TC[i + 1] = currTC; CT[i + 1] = currCT; CA[i + 1] = currCA; same[i + 1] = currsame; } } int get_distance(int x, int y) { int64_t a1 = A1[y + 1] - A1[x]; int64_t t1 = T1[y + 1] - T1[x]; int64_t c1 = C1[y + 1] - C1[x]; int64_t a2 = A2[y + 1] - A2[x]; int64_t t2 = T2[y + 1] - T2[x]; int64_t c2 = C2[y + 1] - C2[x]; int64_t at = AT[y + 1] - AT[x]; int64_t ac = AC[y + 1] - AC[x]; int64_t ta = TA[y + 1] - TA[x]; int64_t tc = TC[y + 1] - TC[x]; int64_t ca = CA[y + 1] - CA[x]; int64_t ct = CT[y + 1] - CT[x]; int64_t s = same[y + 1] - same[x]; // cout << s << endl; if (t1 != t2 || a1 != a2 || c1 != c2) { return -1; } int res = 0; res += min(ac, ca); res += min(at, ta); res += min(tc, ct); res += abs(ac - ca) * 2; return res; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 60 ms | 12152 KB | Output is correct |
2 | Correct | 61 ms | 12332 KB | Output is correct |
3 | Correct | 59 ms | 11384 KB | Output is correct |
4 | Correct | 131 ms | 12348 KB | Output is correct |
5 | Correct | 1 ms | 204 KB | Output is correct |
6 | Correct | 1 ms | 204 KB | Output is correct |
7 | Correct | 1 ms | 204 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 280 KB | Output is correct |
2 | Correct | 1 ms | 204 KB | Output is correct |
3 | Correct | 1 ms | 204 KB | Output is correct |
4 | Correct | 13 ms | 10840 KB | Output is correct |
5 | Correct | 13 ms | 11032 KB | Output is correct |
6 | Correct | 13 ms | 10956 KB | Output is correct |
7 | Correct | 12 ms | 10316 KB | Output is correct |
8 | Correct | 12 ms | 11084 KB | Output is correct |
9 | Correct | 13 ms | 11084 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 280 KB | Output is correct |
2 | Correct | 1 ms | 204 KB | Output is correct |
3 | Correct | 1 ms | 204 KB | Output is correct |
4 | Correct | 13 ms | 10840 KB | Output is correct |
5 | Correct | 13 ms | 11032 KB | Output is correct |
6 | Correct | 13 ms | 10956 KB | Output is correct |
7 | Correct | 12 ms | 10316 KB | Output is correct |
8 | Correct | 12 ms | 11084 KB | Output is correct |
9 | Correct | 13 ms | 11084 KB | Output is correct |
10 | Correct | 59 ms | 12148 KB | Output is correct |
11 | Correct | 63 ms | 12280 KB | Output is correct |
12 | Correct | 65 ms | 11920 KB | Output is correct |
13 | Correct | 63 ms | 12148 KB | Output is correct |
14 | Correct | 66 ms | 12668 KB | Output is correct |
15 | Correct | 116 ms | 12656 KB | Output is correct |
16 | Correct | 58 ms | 11880 KB | Output is correct |
17 | Correct | 94 ms | 12172 KB | Output is correct |
18 | Correct | 57 ms | 12696 KB | Output is correct |
19 | Correct | 46 ms | 12004 KB | Output is correct |
20 | Correct | 47 ms | 12244 KB | Output is correct |
21 | Correct | 48 ms | 12800 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 280 KB | Output is correct |
2 | Correct | 1 ms | 204 KB | Output is correct |
3 | Correct | 1 ms | 204 KB | Output is correct |
4 | Correct | 13 ms | 10840 KB | Output is correct |
5 | Correct | 13 ms | 11032 KB | Output is correct |
6 | Correct | 13 ms | 10956 KB | Output is correct |
7 | Correct | 12 ms | 10316 KB | Output is correct |
8 | Correct | 12 ms | 11084 KB | Output is correct |
9 | Correct | 13 ms | 11084 KB | Output is correct |
10 | Correct | 12 ms | 10152 KB | Output is correct |
11 | Correct | 12 ms | 11100 KB | Output is correct |
12 | Correct | 12 ms | 10316 KB | Output is correct |
13 | Correct | 22 ms | 10940 KB | Output is correct |
14 | Correct | 12 ms | 11084 KB | Output is correct |
15 | Correct | 13 ms | 11084 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 60 ms | 12152 KB | Output is correct |
2 | Correct | 61 ms | 12332 KB | Output is correct |
3 | Correct | 59 ms | 11384 KB | Output is correct |
4 | Correct | 131 ms | 12348 KB | Output is correct |
5 | Correct | 1 ms | 204 KB | Output is correct |
6 | Correct | 1 ms | 204 KB | Output is correct |
7 | Correct | 1 ms | 204 KB | Output is correct |
8 | Correct | 1 ms | 280 KB | Output is correct |
9 | Correct | 1 ms | 204 KB | Output is correct |
10 | Correct | 1 ms | 204 KB | Output is correct |
11 | Correct | 13 ms | 10840 KB | Output is correct |
12 | Correct | 13 ms | 11032 KB | Output is correct |
13 | Correct | 13 ms | 10956 KB | Output is correct |
14 | Correct | 12 ms | 10316 KB | Output is correct |
15 | Correct | 12 ms | 11084 KB | Output is correct |
16 | Correct | 13 ms | 11084 KB | Output is correct |
17 | Correct | 59 ms | 12148 KB | Output is correct |
18 | Correct | 63 ms | 12280 KB | Output is correct |
19 | Correct | 65 ms | 11920 KB | Output is correct |
20 | Correct | 63 ms | 12148 KB | Output is correct |
21 | Correct | 66 ms | 12668 KB | Output is correct |
22 | Correct | 116 ms | 12656 KB | Output is correct |
23 | Correct | 58 ms | 11880 KB | Output is correct |
24 | Correct | 94 ms | 12172 KB | Output is correct |
25 | Correct | 57 ms | 12696 KB | Output is correct |
26 | Correct | 46 ms | 12004 KB | Output is correct |
27 | Correct | 47 ms | 12244 KB | Output is correct |
28 | Correct | 48 ms | 12800 KB | Output is correct |
29 | Correct | 12 ms | 10152 KB | Output is correct |
30 | Correct | 12 ms | 11100 KB | Output is correct |
31 | Correct | 12 ms | 10316 KB | Output is correct |
32 | Correct | 22 ms | 10940 KB | Output is correct |
33 | Correct | 12 ms | 11084 KB | Output is correct |
34 | Correct | 13 ms | 11084 KB | Output is correct |
35 | Correct | 1 ms | 204 KB | Output is correct |
36 | Correct | 59 ms | 11416 KB | Output is correct |
37 | Correct | 66 ms | 12316 KB | Output is correct |
38 | Correct | 64 ms | 12000 KB | Output is correct |
39 | Correct | 68 ms | 12668 KB | Output is correct |
40 | Correct | 75 ms | 12664 KB | Output is correct |
41 | Correct | 12 ms | 11100 KB | Output is correct |
42 | Correct | 95 ms | 12024 KB | Output is correct |
43 | Correct | 60 ms | 12672 KB | Output is correct |
44 | Correct | 56 ms | 12700 KB | Output is correct |
45 | Correct | 54 ms | 12044 KB | Output is correct |
46 | Correct | 47 ms | 12672 KB | Output is correct |
47 | Correct | 46 ms | 12796 KB | Output is correct |