Submission #533119

#TimeUsernameProblemLanguageResultExecution timeMemory
533119VodkaInTheJarMutating DNA (IOI21_dna)C++17
0 / 100
35 ms6884 KiB
#include <bits/stdc++.h>
#include "dna.h"

using namespace std;

const int maxn = 1e5 + 3;

int get_code(char ch) {
    if (ch == 'A')
        return 0;

    if (ch == 'C')
        return 1;

    return 2;
}

int cnt[maxn][3][3];
void init(string a, string b) {
    for (int i = 0; i < (int)a.size(); i++) {
        for (int j = 0; j < 3; j++)
            for (int k = 0; k < 3; k++)
                cnt[i][j][k] = (i ? cnt[i-1][j][k] : 0);

        cnt[i][get_code(a[i])][get_code(b[i])]++;
    }
}

int temp[3][3];
int get_distance(int l, int r) {
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
            temp[i][j] = cnt[r][i][j] - cnt[l-1][i][j];

    int ans = 0, left = r - l + 1;
    for (int i = 0; i < 3; i++)
        for (int j = i + 1; j < 3; j++) {
            int mins = min(temp[i][j], temp[j][i]);
            temp[i][j] -= mins;
            temp[j][i] -= mins;
            ans += min(temp[i][j], mins);
            left -= mins * 2;
        }

    for (int i = 0; i < 3; i++)
        left -= temp[i][i];

    ans += left * 2 / 3;
    return ans;
}
#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...