Submission #1142081

#TimeUsernameProblemLanguageResultExecution timeMemory
1142081techvioDNA 돌연변이 (IOI21_dna)C++20
43 / 100
1593 ms3912 KiB
#include "dna.h"
#include <bits/stdc++.h>
using namespace std;

string sa;
string sb;
vector<int> pas, pts;
vector<int> pab, ptb;

void init(std::string a, std::string b) {
    sa = a;
    sb = b;
    int n = sa.size();
    pas.resize(n+1, 0);
    pts.resize(n+1, 0);
    pab.resize(n+1, 0);
    ptb.resize(n+1, 0);
    for (int i = 0; i < n; i++) {
        pas[i+1] = pas[i]+(sa[i] == 'A');
        pts[i+1] = pts[i]+(sa[i] == 'T');
    }
    for (int i = 0; i < n; i++) {
        pab[i+1] = pab[i]+(sb[i] == 'A');
        ptb[i+1] = ptb[i]+(sb[i] == 'T');
    }
}

int get_distance(int x, int y) {
	int c = 0;
    int cas = pas[y+1]-pas[x];
    int cts = pts[y+1]-pts[x];
    int cab = pab[y+1]-pab[x];
    int ctb = ptb[y+1]-ptb[x];
    if (cas != cab || cts != ctb) return -1;
    for (int i = x; i <= y; i++) if (sa[i] != sb[i]) c++;
	int ans = (c+1)/2;
    return ans;
}
#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...