Submission #1303998

#TimeUsernameProblemLanguageResultExecution timeMemory
1303998nekolieMutating DNA (IOI21_dna)C++20
0 / 100
21 ms4828 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][i]-ile[x-1][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 (*max_element(cnt+1,cnt+7) != *min_element(cnt+1,cnt+7))
        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...