이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "dna.h"
#include <stdio.h>
#include <vector>
#include <string>
#include <map>
#include <iostream>
// g++ grader.cpp dna.cpp -o dna
using namespace std;
vector<vector<int>> prefix;
map<char, int> base;
void init(string a, string b) {
int size = a.size() + 1;
prefix = vector<vector<int>> (size);
base['A'] = 0;
base['C'] = 1;
base['T'] = 2;
prefix[0] = {0, 0, 0, 0, 0, 0, 0}; // A, C, T (1), A, C, T (2), diff
for (int k = 1; k < size; k++) {
int i = k-1;
prefix[k] = prefix[k-1];
prefix[k][base[a[i]]]++;
prefix[k][base[b[i]]+3]++;
if (a[i] != b[i]) prefix[k][6]++;
}
}
int get_distance(int x, int y) {
vector<int> a = prefix[x], b = prefix[y+1];
for (int k = 0; k < 7; k++) {
b[k] -= a[k];
// cout << b[k] << " ";
}
// cout << "\n";
for (int k = 0; k < 3; k++) if (b[k] != b[k+3]) return -1;
int ans = b[6] / 2;
if (b[6] % 2) ans += 1;
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |