Submission #1145503

#TimeUsernameProblemLanguageResultExecution timeMemory
1145503LeonidCukMutating DNA (IOI21_dna)C++20
22 / 100
20 ms4876 KiB
#include <bits/stdc++.h>
using namespace std;
int pref[100000]={0};
int pf[100000][2][3];
void init(string a, string b)
{
    int n=a.size();
    map<char,int>m={{'A',0},{'C',1},{'T',2}};
        for(int j=0;j<2;j++)
        {
            for(int z=0;z<3;z++)pf[0][j][z]=0;
        }
    for(int i=1;i<=n;i++)
    {
        for(int j=0;j<2;j++)
        {
            for(int z=0;z<3;z++)pf[i][j][z]=pf[i-1][j][z];
        }
        pref[i]=pref[i-1];
        if(a[i-1]!=b[i-1])
        {
            pref[i]++;
        }
        pf[i][0][m[a[i-1]]]++;
        pf[i][1][m[b[i-1]]]++;
    }
}
int get_distance(int x, int y)
{
     bool check=true;
        for(int j=0;j<3;j++)
        {
            if(pf[y+1][1][j]-pf[x][1][j]!=pf[y+1][0][j]-pf[x][0][j])return -1;
        }
        return (pref[y+1]-pref[x])%2+(pref[y+1]-pref[x])/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...