Submission #521580

#TimeUsernameProblemLanguageResultExecution timeMemory
521580marat0210Mutating DNA (IOI21_dna)C++17
0 / 100
31 ms4416 KiB
#include <dna.h>
#include <bits/stdc++.h>

using namespace std;

vector <int> posa, posb;

void init(string a, string b)
{
    int n = a.size();
    for (int i = 0; i < n; ++i) {
        if (a[i] == 'A') {
            posa.push_back(0);
        }
        else if (a[i] == 'T') {
            posa.push_back(1);
        }
        else if (a[i] == 'C') {
            posa.push_back(2);
        }
        if (b[i] == 'A') {
            posb.push_back(0);
        }
        else if (b[i] == 'T') {
            posb.push_back(1);
        }
        else if (b[i] == 'C') {
            posb.push_back(2);
        }
    }
}

int get_distance(int x, int y)
{
    if (y - x == 2) {
        bool ok = true;
        for (int i = x; i <= y; ++i) {
            if (posa[i] != posb[i]) {
                ok = false;
                break;
            }
        }
        if (ok) {
            return 0;
        }
        ok = true;
        for (int i = x; i <= y; ++i) {
            bool cur = false;
            for (int j = x; j <= y; ++j) {
                if (posa[i] == posb[j]) {
                    cur = true;
                }
            }
            if (!cur) {
                ok = false;
            }
        }
        if (!ok) {
            return -1;
        }
        ok = false;
        for (int i = x; i <= y; ++i) {
            if (posa[i] == posb[i]) {
                ok = true;
                break;
            }
        }
        if (ok) {
            return 1;
        }
        else {
            return 2;
        }
    }
    else if (y - x == 1) {
        if (posa[x] == posb[x] and posa[y] == posb[y]) {
            return 0;
        }
        else if (posa[x] == posb[y] and posb[x] == posa[y]) {
            return 1;
        }
        else {
            return -1;
        }
    }
    else {
        if (posa[x] == posb[x]) {
            return 0;
        }
        else {
            return -1;
        }
    }
}
#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...