Submission #964671

# Submission time Handle Problem Language Result Execution time Memory
964671 2024-04-17T10:05:10 Z KasymK Mutating DNA (IOI21_dna) C++17
56 / 100
31 ms 5204 KB
#include "dna.h"
#include "bits/stdc++.h"

using namespace std;

string s, s2;
int n;

const int N = 1e5 + 5;
 
int p_a[N] = {0}, p_b[N] = {0}, p_bile[N] = {0};

void init(string a, string b){
    s = a;
    s2 = b;
    n = (int)s.size();
    for(int i = 0; i < n; ++i){
		p_a[i + 1] = p_a[i];
		p_b[i + 1] = p_b[i];
		p_bile[i + 1] = p_bile[i];
		if(a[i] == 'A')
			p_a[i + 1]++;
		if(b[i] == 'A')
			p_b[i + 1]++;
		if(a[i] == b[i])
			p_bile[i + 1]++;
	}
}

int get_distance(int x, int y){
    if(y - x > 2){
        int uz_a = p_a[y + 1] - p_a[x], uz_b = p_b[y + 1] - p_b[x];
        int uz_bile = p_bile[y + 1] - p_bile[x];
        if(uz_a != uz_b)
            return -1;
        else{
            int ret = (y - x + 1 - uz_bile) >> 1;
            return ret;
        }
    }
    int s_a = 0, s_c = 0, s_t = 0;
    int s2_a = 0, s2_c = 0, s2_t = 0;
    for(int i = x; i <= y; ++i){
        s_a += (s[i] == 'A');
        s_c += (s[i] == 'C');
        s_t += (s[i] == 'T');
        s2_a += (s2[i] == 'A');
        s2_c += (s2[i] == 'C');
        s2_t += (s2[i] == 'T');
    }
    if(s_a != s2_a or s_c != s2_c or s_t != s2_t)
        return -1;
    int ok = 1;
    for(int i = x; i <= y; ++i)
        ok &= (s[i] == s2[i]);
    if(ok)
        return 0;
    int ans = 0;
    for(int i = x; i <= y; ++i)
        ans += (s[i] != s2[i]);
    ans--;
    return ans;
}
# Verdict Execution time Memory Grader output
1 Correct 24 ms 3928 KB Output is correct
2 Correct 31 ms 4272 KB Output is correct
3 Correct 24 ms 3884 KB Output is correct
4 Correct 24 ms 4240 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 3 ms 2396 KB Output is correct
5 Correct 3 ms 2396 KB Output is correct
6 Correct 3 ms 2448 KB Output is correct
7 Correct 3 ms 2140 KB Output is correct
8 Correct 3 ms 2396 KB Output is correct
9 Correct 2 ms 2392 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 3 ms 2396 KB Output is correct
5 Correct 3 ms 2396 KB Output is correct
6 Correct 3 ms 2448 KB Output is correct
7 Correct 3 ms 2140 KB Output is correct
8 Correct 3 ms 2396 KB Output is correct
9 Correct 2 ms 2392 KB Output is correct
10 Correct 28 ms 4468 KB Output is correct
11 Correct 27 ms 4460 KB Output is correct
12 Correct 27 ms 4696 KB Output is correct
13 Correct 24 ms 4676 KB Output is correct
14 Correct 24 ms 4872 KB Output is correct
15 Correct 22 ms 4188 KB Output is correct
16 Correct 24 ms 4944 KB Output is correct
17 Correct 27 ms 4248 KB Output is correct
18 Correct 24 ms 4904 KB Output is correct
19 Correct 22 ms 4944 KB Output is correct
20 Correct 22 ms 4668 KB Output is correct
21 Correct 24 ms 5204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 3 ms 2396 KB Output is correct
5 Correct 3 ms 2396 KB Output is correct
6 Correct 3 ms 2448 KB Output is correct
7 Correct 3 ms 2140 KB Output is correct
8 Correct 3 ms 2396 KB Output is correct
9 Correct 2 ms 2392 KB Output is correct
10 Correct 3 ms 2276 KB Output is correct
11 Correct 2 ms 2396 KB Output is correct
12 Incorrect 3 ms 2140 KB Output isn't correct
13 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 24 ms 3928 KB Output is correct
2 Correct 31 ms 4272 KB Output is correct
3 Correct 24 ms 3884 KB Output is correct
4 Correct 24 ms 4240 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 1 ms 344 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 3 ms 2396 KB Output is correct
12 Correct 3 ms 2396 KB Output is correct
13 Correct 3 ms 2448 KB Output is correct
14 Correct 3 ms 2140 KB Output is correct
15 Correct 3 ms 2396 KB Output is correct
16 Correct 2 ms 2392 KB Output is correct
17 Correct 28 ms 4468 KB Output is correct
18 Correct 27 ms 4460 KB Output is correct
19 Correct 27 ms 4696 KB Output is correct
20 Correct 24 ms 4676 KB Output is correct
21 Correct 24 ms 4872 KB Output is correct
22 Correct 22 ms 4188 KB Output is correct
23 Correct 24 ms 4944 KB Output is correct
24 Correct 27 ms 4248 KB Output is correct
25 Correct 24 ms 4904 KB Output is correct
26 Correct 22 ms 4944 KB Output is correct
27 Correct 22 ms 4668 KB Output is correct
28 Correct 24 ms 5204 KB Output is correct
29 Correct 3 ms 2276 KB Output is correct
30 Correct 2 ms 2396 KB Output is correct
31 Incorrect 3 ms 2140 KB Output isn't correct
32 Halted 0 ms 0 KB -