Submission #1194086

#TimeUsernameProblemLanguageResultExecution timeMemory
1194086PetrixMutating DNA (IOI21_dna)C++20
35 / 100
47 ms9532 KiB
#include <iostream>
#include "dna.h"
using namespace std;

long long sp[100001][3][3];

void init(string a, string b){
    char aux[]={'A','C','T'};
    int i,j,k;
    for(i=0;i<a.size();i++){
        for(j=0;j<3;j++){
            for(k=0;k<3;k++){
                sp[i+1][j][k]=sp[i][j][k];
                if(a[i]==aux[j] && b[i]==aux[k]) sp[i+1][j][k]++;
            }
        }
    }
}

int get_distance(int x,int y){
    long long perechi=0,triplete=0,i,j,sum1,sum2;
    for(i=0;i<3;i++){
        j=(i+1)%3;
        sum1=sp[y+1][i][j]-sp[x][i][j];sum2=sp[y+1][j][i]-sp[x][j][i];
        if(!i) triplete=abs(sum1-sum2);
        else if(abs(sum1-sum2)!=triplete) return -1;
        perechi+=min(sum1,sum2);
    }
    return perechi+triplete*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...