Submission #689463

#TimeUsernameProblemLanguageResultExecution timeMemory
689463coding_snorlaxMutating DNA (IOI21_dna)C++17
43 / 100
1580 ms2376 KiB
#include<bits/stdc++.h>
#include "dna.h"
using namespace std;
string A,B;
void init(string a, string b){
    A=a;
    B=b;
}
int get_distance(int x,int y){
    if(y-x<=2){
    if(y==x){
        if(A[x]==B[x]) return 0;
        else return -1;
    }
    else if(y==x+1){
        if(A[x]==B[x] && A[x+1]==B[x+1]) return 0;
        else if(A[x]==B[x+1] && A[x+1]==B[x]) return 1;
        else return -1;
    }
    else{
        if(A[x+2]==B[x+2]){
            if(A[x]==B[x] && A[x+1]==B[x+1]) return 0;
            else if(A[x]==B[x+1] && A[x+1]==B[x]) return 1;
            else return -1;
        }
        else if(A[x+1]==B[x+1]){
            if(A[x]==B[x] && A[x+2]==B[x+2]) return 0;
            else if(A[x]==B[x+2] && A[x+2]==B[x]) return 1;
            else return -1;
        }
        else if(A[x]==B[x]){
            if(A[x+1]==B[x+1] && A[x+2]==B[x+2]) return 0;
            else if(A[x+1]==B[x+2] && A[x+2]==B[x+1]) return 1;
            else return -1;
        }
        else{
            if(A[x]==B[x+1] && A[x+1]==B[x+2] && A[x+2]==B[x]) return 2;
            else if(A[x+1] == B[x] && A[x+2]==B[x+1] && A[x]==B[x+2]) return 2;
            else return -1;
        }
    }
    }
    int Count = 0;
    int find_answer = 0;

    for(int i=x;i<=y;i++){
        if(A[i]!=B[i]){
            if(A[i]=='A') find_answer++;
            else find_answer--;
            Count++;
        }
    }
    if(find_answer) return -1;
    else return Count/2;
}
#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...