#include "dna.h"
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0; i<(n); i++)
#define rep2(i,a,b) for(int i=(a); i<(b); i++)
#define all(x) x.begin(),x.end()
using ll=long long;
int cum[7][100010];
int get_type(char s,char t){
if(s=='A' and t=='T'){
return 0;
}
if(s=='T' and t=='A'){
return 1;
}
if(s=='A' and t=='C'){
return 2;
}
if(s=='C' and t=='A'){
return 3;
}
if(s=='T' and t=='C'){
return 4;
}
if(s=='C' and t=='T'){
return 5;
}
return 6;
}
void init(std::string a, std::string b) {
rep(i,7){
cum[i][0]=0;
}
rep(i,a.size()){
rep(j,7){
cum[j][i+1]=cum[j][i];
}
cum[get_type(a[i],b[i])][i+1]++;
}
}
int get_distance(int x, int y) {
int types[7];
rep(i,7){
types[i]=cum[i][y+1]-cum[i][x];
}
if(types[0]+types[2]!=types[1]+types[3]){
return -1;
}
if(types[1]+types[4]!=types[0]+types[5]){
return -1;
}
int ans=0;
rep(i,3){
int now=min(types[i*2],types[i*2+1]);
types[i*2]-=now;
types[i*2+1]-=now;
ans+=now;
}
ans+=max(types[0],types[1])*2;
return ans;
}
/*
at
ta
ag
ga
tg
gt
*/
Compilation message
dna.cpp: In function 'void init(std::string, std::string)':
dna.cpp:4:32: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
4 | #define rep(i,n) for(int i=0; i<(n); i++)
| ^
dna.cpp:35:2: note: in expansion of macro 'rep'
35 | rep(i,a.size()){
| ^~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
25 ms |
5136 KB |
Output is correct |
2 |
Correct |
26 ms |
5664 KB |
Output is correct |
3 |
Correct |
26 ms |
5408 KB |
Output is correct |
4 |
Correct |
31 ms |
5656 KB |
Output is correct |
5 |
Correct |
1 ms |
2396 KB |
Output is correct |
6 |
Correct |
1 ms |
2396 KB |
Output is correct |
7 |
Correct |
1 ms |
2396 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2396 KB |
Output is correct |
2 |
Correct |
1 ms |
2396 KB |
Output is correct |
3 |
Correct |
1 ms |
2392 KB |
Output is correct |
4 |
Correct |
3 ms |
3672 KB |
Output is correct |
5 |
Correct |
3 ms |
3676 KB |
Output is correct |
6 |
Correct |
4 ms |
3676 KB |
Output is correct |
7 |
Correct |
5 ms |
3676 KB |
Output is correct |
8 |
Correct |
4 ms |
3672 KB |
Output is correct |
9 |
Correct |
3 ms |
3676 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2396 KB |
Output is correct |
2 |
Correct |
1 ms |
2396 KB |
Output is correct |
3 |
Correct |
1 ms |
2392 KB |
Output is correct |
4 |
Correct |
3 ms |
3672 KB |
Output is correct |
5 |
Correct |
3 ms |
3676 KB |
Output is correct |
6 |
Correct |
4 ms |
3676 KB |
Output is correct |
7 |
Correct |
5 ms |
3676 KB |
Output is correct |
8 |
Correct |
4 ms |
3672 KB |
Output is correct |
9 |
Correct |
3 ms |
3676 KB |
Output is correct |
10 |
Correct |
26 ms |
5592 KB |
Output is correct |
11 |
Correct |
26 ms |
5788 KB |
Output is correct |
12 |
Correct |
28 ms |
6176 KB |
Output is correct |
13 |
Correct |
28 ms |
5916 KB |
Output is correct |
14 |
Correct |
27 ms |
6156 KB |
Output is correct |
15 |
Correct |
26 ms |
5392 KB |
Output is correct |
16 |
Correct |
26 ms |
6236 KB |
Output is correct |
17 |
Correct |
28 ms |
5912 KB |
Output is correct |
18 |
Correct |
27 ms |
6104 KB |
Output is correct |
19 |
Correct |
25 ms |
6412 KB |
Output is correct |
20 |
Correct |
27 ms |
5912 KB |
Output is correct |
21 |
Correct |
25 ms |
6164 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2396 KB |
Output is correct |
2 |
Correct |
1 ms |
2396 KB |
Output is correct |
3 |
Correct |
1 ms |
2392 KB |
Output is correct |
4 |
Correct |
3 ms |
3672 KB |
Output is correct |
5 |
Correct |
3 ms |
3676 KB |
Output is correct |
6 |
Correct |
4 ms |
3676 KB |
Output is correct |
7 |
Correct |
5 ms |
3676 KB |
Output is correct |
8 |
Correct |
4 ms |
3672 KB |
Output is correct |
9 |
Correct |
3 ms |
3676 KB |
Output is correct |
10 |
Correct |
3 ms |
3672 KB |
Output is correct |
11 |
Correct |
4 ms |
3684 KB |
Output is correct |
12 |
Correct |
3 ms |
3720 KB |
Output is correct |
13 |
Correct |
4 ms |
3736 KB |
Output is correct |
14 |
Correct |
3 ms |
3676 KB |
Output is correct |
15 |
Correct |
4 ms |
3880 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
25 ms |
5136 KB |
Output is correct |
2 |
Correct |
26 ms |
5664 KB |
Output is correct |
3 |
Correct |
26 ms |
5408 KB |
Output is correct |
4 |
Correct |
31 ms |
5656 KB |
Output is correct |
5 |
Correct |
1 ms |
2396 KB |
Output is correct |
6 |
Correct |
1 ms |
2396 KB |
Output is correct |
7 |
Correct |
1 ms |
2396 KB |
Output is correct |
8 |
Correct |
1 ms |
2396 KB |
Output is correct |
9 |
Correct |
1 ms |
2396 KB |
Output is correct |
10 |
Correct |
1 ms |
2392 KB |
Output is correct |
11 |
Correct |
3 ms |
3672 KB |
Output is correct |
12 |
Correct |
3 ms |
3676 KB |
Output is correct |
13 |
Correct |
4 ms |
3676 KB |
Output is correct |
14 |
Correct |
5 ms |
3676 KB |
Output is correct |
15 |
Correct |
4 ms |
3672 KB |
Output is correct |
16 |
Correct |
3 ms |
3676 KB |
Output is correct |
17 |
Correct |
26 ms |
5592 KB |
Output is correct |
18 |
Correct |
26 ms |
5788 KB |
Output is correct |
19 |
Correct |
28 ms |
6176 KB |
Output is correct |
20 |
Correct |
28 ms |
5916 KB |
Output is correct |
21 |
Correct |
27 ms |
6156 KB |
Output is correct |
22 |
Correct |
26 ms |
5392 KB |
Output is correct |
23 |
Correct |
26 ms |
6236 KB |
Output is correct |
24 |
Correct |
28 ms |
5912 KB |
Output is correct |
25 |
Correct |
27 ms |
6104 KB |
Output is correct |
26 |
Correct |
25 ms |
6412 KB |
Output is correct |
27 |
Correct |
27 ms |
5912 KB |
Output is correct |
28 |
Correct |
25 ms |
6164 KB |
Output is correct |
29 |
Correct |
3 ms |
3672 KB |
Output is correct |
30 |
Correct |
4 ms |
3684 KB |
Output is correct |
31 |
Correct |
3 ms |
3720 KB |
Output is correct |
32 |
Correct |
4 ms |
3736 KB |
Output is correct |
33 |
Correct |
3 ms |
3676 KB |
Output is correct |
34 |
Correct |
4 ms |
3880 KB |
Output is correct |
35 |
Correct |
1 ms |
2396 KB |
Output is correct |
36 |
Correct |
25 ms |
5744 KB |
Output is correct |
37 |
Correct |
27 ms |
5972 KB |
Output is correct |
38 |
Correct |
28 ms |
6092 KB |
Output is correct |
39 |
Correct |
27 ms |
5880 KB |
Output is correct |
40 |
Correct |
28 ms |
6416 KB |
Output is correct |
41 |
Correct |
3 ms |
3928 KB |
Output is correct |
42 |
Correct |
27 ms |
6172 KB |
Output is correct |
43 |
Correct |
32 ms |
6160 KB |
Output is correct |
44 |
Correct |
27 ms |
6424 KB |
Output is correct |
45 |
Correct |
26 ms |
6180 KB |
Output is correct |
46 |
Correct |
25 ms |
6416 KB |
Output is correct |
47 |
Correct |
27 ms |
6136 KB |
Output is correct |