Submission #1288862

#TimeUsernameProblemLanguageResultExecution timeMemory
1288862harryleeeMutating DNA (IOI21_dna)C++20
100 / 100
23 ms6132 KiB
#include <bits/stdc++.h>
using namespace std;
/**ifstream fin ("date.in");
ofstream fout ("date.out");
#define cin fin
#define cout fout**/

const int MAXN=1e5+10;
const int INF=1e9;

int f (char c){
    if (c=='A') return 0;
    if (c=='C') return 1;
    if (c=='T') return 2;
}

int a[3][3][MAXN],n;

void init(string s1, string s2){
    n=s1.size ();
    for (int i=1;i<=n;++i){
        int x=f (s1[i-1]),y=f (s2[i-1]);
        for (int j=0;j<3;++j){
            for (int k=0;k<3;++k){
                a[j][k][i]=a[j][k][i-1];
            }
        }
        a[x][y][i]++;
    }
}

int crt[3][3];

int get_distance(int l, int r){
    l++,r++;
    for (int i=0;i<3;++i){
        for (int j=0;j<3;++j){
            crt[i][j]=a[i][j][r]-a[i][j][l-1];
        }
    }

    for (int i=0;i<3;++i){
        int x=0,y=0;
        for (int j=0;j<3;
        ++j){
            if (i==j) continue;
            x+=crt[i][j];
            y+=crt[j][i];
        }
        if (x!=y){
            return -1;
        }
    }
    int rez=0;
    for (int i=0;i<3;++i){
        for (int j=0;j<3;++j){
            if (i==j) continue;
            int x=min (crt[i][j],crt[j][i]);
            rez+=x;
            crt[i][j]-=x;
            crt[j][i]-=x;
        }
    }
    int x=0;
    for (int i=0;i<3;++i){
        for (int j=0;j<3;++j){
            if (i!=j){
                x += crt[i][j];
            }
        }
    }
    rez+=(x / 3) * 2;
    return rez;
}

Compilation message (stderr)

dna.cpp: In function 'int f(char)':
dna.cpp:15:1: warning: control reaches end of non-void function [-Wreturn-type]
   15 | }
      | ^
#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...