제출 #1015918

#제출 시각아이디문제언어결과실행 시간메모리
1015918deeraDNA 돌연변이 (IOI21_dna)C++17
43 / 100
1531 ms2476 KiB
#include <bits/stdc++.h>
using namespace std;

#include "dna.h"

string A, B;

void init(string a, string b) {
    A = a;
    B = b;
}

int get_distance(int x, int y) {
    string a = A.substr(x, (y-x+1));
    string b = B.substr(x, (y-x+1));

    if (a == b) {
        return 0;
    }

    string fa = "", fb = "";

    int a_a = 0, a_c = 0, a_t = 0;
    int b_a = 0, b_c = 0, b_t = 0;

    for(int i=0;i<a.size();i++) {
        if (a[i] != b[i]) {
            fa += a.substr(i, 1);
            fb += b.substr(i, 1);

            if (a[i] == 'A') {
                a_a++;
            } else if (a[i] == 'C') {
                a_c++;
            } else {
                a_t++;
            }

            if (b[i] == 'A') {
                b_a++;
            } else if (b[i] == 'C') {
                b_c++;
            } else {
                b_t++;
            }
        }
    }

    if (a_a != b_a || a_c != b_c || a_t != b_t) {
        return -1;
    }

    a = fa;
    b = fb;

    int n = a.size();

    if (a == b) {
        return 0;
    }

    if (n == 1) {
        return -1;
    }

    if (n == 2 || n == 3) {
        return n - 1;
    }

    return (n / 2) + (n % 2);
}

컴파일 시 표준 에러 (stderr) 메시지

dna.cpp: In function 'int get_distance(int, int)':
dna.cpp:26:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |     for(int i=0;i<a.size();i++) {
      |                 ~^~~~~~~~~
#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...