제출 #1312272

#제출 시각아이디문제언어결과실행 시간메모리
1312272opeleklanosDNA 돌연변이 (IOI21_dna)C++20
0 / 100
17 ms4128 KiB
#include <iostream>
#include <vector>
#include "dna.h"
using namespace std;

string a;
string b;

#define C first
#define A second.first
#define T second.second

vector<int> same;
vector<int> t1;
vector<int> t2;

void init(string a1, string b1){
    a = a1;
    b = b1;
    int n = a.size();
    same.assign(n+1, 0);
    t1.assign(n+1, 0);
    t2.assign(n+1, 0);

    for(int i = 1; i<=n; i++){
        same[i] = same[i-1] + (a[i-1] == b[i-1]);
        t1[i] = t1[i-1] + (a[i-1] == 'T');
        t2[i] = t2[i-1] + (b[i-1] == 'T');
    }
}

int get_distance(int l, int r){
    if(t1[r+1] - t1[l] != t2[r+1] - t2[l]) return -1;
    return ((r-l+1) - same[r+1] - same[l]) /2;
}

int get_distancesubt1(int x, int y){
    if(x == y){
        if(a[x] == b[x]) return 0;
        else return -1;
    }
    if(y - x == 1){
        if(a[x] == b[x]){
            if(a[y] == b[y]) return 0;
            else return -1;
        }
        if(a[x] == b[y]){
            if(a[y] == b[x]) return 1;
            else return -1;
        }
        return -1;
    }
    if(y-x == 2){
        pair<int, pair<int, int>> o;
        for(int i = x; i<=y; i++){
            if(a[i] == 'C') o.C++;
            if(a[i] == 'A') o.A++;
            if(a[i] == 'T') o.T++;
        }
        for(int i = x; i<=y; i++){
            if(b[i] == 'C') o.C--;
            if(b[i] == 'A') o.A--;
            if(b[i] == 'T') o.T--;
        }
        if(o.C != 0 || o.A != 0 || o.T != 0) return -1;
        int same = 0;
        for(int i = x; i<=y; i++) same += (a[i] == b[i]);
        if(same == 1) return 1;
        if(same == 0) return 2;
        if(same == 3) return 0;
        return -1;
    }
}

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

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