제출 #1343767

#제출 시각아이디문제언어결과실행 시간메모리
1343767ElyesChaabouniDNA 돌연변이 (IOI21_dna)C++20
35 / 100
20 ms4912 KiB
#include "dna.h"
#include <bits/stdc++.h>
using namespace std;

string a,b;
vector<int> prefa;
vector<int> prefb;
vector<int> prefa2;
vector<int> prefb2;
vector<int> prefdiff;
void init(std::string f, std::string s) {
    a=f;b=s;
    int n=a.size();
    prefa.resize(n+2);
    prefb.resize(n+2);
    prefa2.resize(n+2);
    prefb2.resize(n+2);
    prefdiff.resize(n+2);
    prefa[0]=0;
    prefb[0]=0;
    prefa2[0]=0;
    prefb2[0]=0;
    prefdiff[0]=0;
    for(int i=1;i<=n+1;i++){
        prefa[i]=prefa[i-1];
        prefb[i]=prefb[i-1];
        prefa2[i]=prefa2[i-1];
        prefb2[i]=prefb2[i-1];
        prefdiff[i]=prefdiff[i-1];
        if(a[i-1]=='B')prefb[i]++;
        if(a[i-1]=='A')prefa[i]++;
        if(b[i-1]=='B')prefb2[i]++;
        if(b[i-1]=='A')prefa2[i]++;
        if(a[i-1]!=b[i-1])prefdiff[i]++;
    }
}

int get_distance(int x, int y) {
	if(prefa[y+1]-prefa[x]!=prefa2[y+1]-prefa2[x] || prefb[y+1]-prefb[x]!=prefb2[y+1]-prefb2[x])return -1;
	int c=prefdiff[y+1]-prefdiff[x];
	return c/2;
}
#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...