#include <bits/stdc++.h>
#include "dna.h"
using namespace std;
#define lim 100005
int n;
int pre_a_a[lim],pre_b_a[lim];// a string a char ----- b string a char
int pre_a_t[lim],pre_b_t[lim];// a string t char ----- b string t char
int pre_a_c[lim],pre_b_c[lim];// a string c char ----- b string c char
int sum[lim];
inline bool querya(int x,int y){
if(pre_a_a[y+1]-pre_a_a[x]==pre_b_a[y+1]-pre_b_a[x])return 1;
return 0;
}
inline bool queryt(int x,int y){
if(pre_a_t[y+1]-pre_a_t[x]==pre_b_t[y+1]-pre_b_t[x])return 1;
return 0;
}
inline bool queryc(int x,int y){
if(pre_a_c[y+1]-pre_a_c[x]==pre_b_c[y+1]-pre_b_c[x])return 1;
return 0;
}
void init(string a,string b) {
n=a.length();
for(int i=0;i<n;i++){
pre_a_a[i+1]=pre_a_a[i];
if(a[i]=='A')pre_a_a[i+1]++;
pre_b_a[i+1]=pre_b_a[i];
if(b[i]=='A')pre_b_a[i+1]++;
pre_a_t[i+1]=pre_a_t[i];
if(a[i]=='T')pre_a_t[i+1]++;
pre_b_t[i+1]=pre_b_t[i];
if(b[i]=='T')pre_b_t[i+1]++;
pre_a_c[i+1]=pre_a_c[i];
if(a[i]=='C')pre_a_c[i+1]++;
pre_b_c[i+1]=pre_b_c[i];
if(b[i]=='C')pre_b_c[i+1]++;
sum[i+1]=sum[i];
if(a[i]!=b[i])sum[i+1]++;
}
}
int get_distance(int x, int y) {
if(y-x<=2){
if(querya(x,y) && queryt(x,y) && queryc(x,y)){
int tut=sum[y+1]-sum[x];
if(tut==3)return 2;
else if(tut==2)return 1;
else if(tut==1)return 1;
else return 0;
}
else return -1;
}
else{
if(querya(x,y) && queryt(x,y)){
return (sum[y+1]-sum[x])/2;
}
else return -1;
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
25 ms |
5136 KB |
Output is correct |
2 |
Correct |
25 ms |
5644 KB |
Output is correct |
3 |
Correct |
26 ms |
5404 KB |
Output is correct |
4 |
Correct |
28 ms |
5540 KB |
Output is correct |
5 |
Correct |
0 ms |
344 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
0 ms |
348 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
3 ms |
3676 KB |
Output is correct |
5 |
Correct |
3 ms |
3760 KB |
Output is correct |
6 |
Correct |
3 ms |
3676 KB |
Output is correct |
7 |
Correct |
3 ms |
3420 KB |
Output is correct |
8 |
Correct |
5 ms |
3928 KB |
Output is correct |
9 |
Correct |
3 ms |
3676 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
3 ms |
3676 KB |
Output is correct |
5 |
Correct |
3 ms |
3760 KB |
Output is correct |
6 |
Correct |
3 ms |
3676 KB |
Output is correct |
7 |
Correct |
3 ms |
3420 KB |
Output is correct |
8 |
Correct |
5 ms |
3928 KB |
Output is correct |
9 |
Correct |
3 ms |
3676 KB |
Output is correct |
10 |
Correct |
27 ms |
5652 KB |
Output is correct |
11 |
Correct |
26 ms |
5744 KB |
Output is correct |
12 |
Correct |
30 ms |
5920 KB |
Output is correct |
13 |
Correct |
27 ms |
5884 KB |
Output is correct |
14 |
Correct |
27 ms |
6160 KB |
Output is correct |
15 |
Correct |
25 ms |
5472 KB |
Output is correct |
16 |
Correct |
35 ms |
5920 KB |
Output is correct |
17 |
Correct |
40 ms |
5676 KB |
Output is correct |
18 |
Correct |
25 ms |
6224 KB |
Output is correct |
19 |
Correct |
29 ms |
6176 KB |
Output is correct |
20 |
Correct |
25 ms |
5912 KB |
Output is correct |
21 |
Correct |
28 ms |
6140 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
3 ms |
3676 KB |
Output is correct |
5 |
Correct |
3 ms |
3760 KB |
Output is correct |
6 |
Correct |
3 ms |
3676 KB |
Output is correct |
7 |
Correct |
3 ms |
3420 KB |
Output is correct |
8 |
Correct |
5 ms |
3928 KB |
Output is correct |
9 |
Correct |
3 ms |
3676 KB |
Output is correct |
10 |
Correct |
4 ms |
3420 KB |
Output is correct |
11 |
Correct |
4 ms |
3676 KB |
Output is correct |
12 |
Incorrect |
4 ms |
3520 KB |
Output isn't correct |
13 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
25 ms |
5136 KB |
Output is correct |
2 |
Correct |
25 ms |
5644 KB |
Output is correct |
3 |
Correct |
26 ms |
5404 KB |
Output is correct |
4 |
Correct |
28 ms |
5540 KB |
Output is correct |
5 |
Correct |
0 ms |
344 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
0 ms |
348 KB |
Output is correct |
8 |
Correct |
0 ms |
344 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
0 ms |
348 KB |
Output is correct |
11 |
Correct |
3 ms |
3676 KB |
Output is correct |
12 |
Correct |
3 ms |
3760 KB |
Output is correct |
13 |
Correct |
3 ms |
3676 KB |
Output is correct |
14 |
Correct |
3 ms |
3420 KB |
Output is correct |
15 |
Correct |
5 ms |
3928 KB |
Output is correct |
16 |
Correct |
3 ms |
3676 KB |
Output is correct |
17 |
Correct |
27 ms |
5652 KB |
Output is correct |
18 |
Correct |
26 ms |
5744 KB |
Output is correct |
19 |
Correct |
30 ms |
5920 KB |
Output is correct |
20 |
Correct |
27 ms |
5884 KB |
Output is correct |
21 |
Correct |
27 ms |
6160 KB |
Output is correct |
22 |
Correct |
25 ms |
5472 KB |
Output is correct |
23 |
Correct |
35 ms |
5920 KB |
Output is correct |
24 |
Correct |
40 ms |
5676 KB |
Output is correct |
25 |
Correct |
25 ms |
6224 KB |
Output is correct |
26 |
Correct |
29 ms |
6176 KB |
Output is correct |
27 |
Correct |
25 ms |
5912 KB |
Output is correct |
28 |
Correct |
28 ms |
6140 KB |
Output is correct |
29 |
Correct |
4 ms |
3420 KB |
Output is correct |
30 |
Correct |
4 ms |
3676 KB |
Output is correct |
31 |
Incorrect |
4 ms |
3520 KB |
Output isn't correct |
32 |
Halted |
0 ms |
0 KB |
- |