Submission #1145511

#TimeUsernameProblemLanguageResultExecution timeMemory
1145511LeonidCukDNA 돌연변이 (IOI21_dna)C++20
56 / 100
23 ms6152 KiB
#include <bits/stdc++.h>
using namespace std;
int pf[100001][3][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<3;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<3;j++)
        {
            for(int z=0;z<3;z++)pf[i][j][z]=pf[i-1][j][z];
        }
        pf[i][m[a[i-1]]][m[b[i-1]]]++;
    }
}
int get_distance(int x, int y)
{
     int temp[3][3];
        for(int j=0;j<3;j++)
        {
            for(int i=0;i<3;i++)
            {
                temp[i][j]=(pf[y+1][i][j]-pf[x][i][j]);
            }
        }
        int sum1=0;
    for(int i=0;i<3;i++)
    {
        if(temp[i][(i+1)%3]+temp[i][(i+2)%3]!=temp[(i+1)%3][i]+temp[(i+2)%3][i])return -1;
        sum1+=temp[i][(i+1)%3]+temp[i][(i+2)%3];
    }
    int sum=0;
    sum+=min(temp[0][1],temp[1][0]);
    sum+=min(temp[1][2],temp[2][1]);
    sum+=min(temp[0][2],temp[2][0]);
    if(sum*2!=sum1)sum+=2;
    return sum;
}
#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...