이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "dna.h"
#include<bits/stdc++.h>
#define eb emplace_back
const int up=1e5+1;
std::vector<char>A,B;
std::vector<int>cnt,cntAA,cntTA,cntAB,cntTB;
void init(std::string a, std::string b) {
A.eb(' ');
B.eb(' ');
cnt.resize(a.size()+1,0);
cntAA.resize(a.size()+1,0);
cntAB.resize(a.size()+1,0);
cntTA.resize(a.size()+1,0);
cntTB.resize(a.size()+1,0);
for(int i=0;i<a.size();++i){
A.eb(a[i]);
B.eb(b[i]);
if(a[i]!=b[i]){
cnt[i+1]=cnt[i]+1;
}
else{
cnt[i+1]=cnt[i];
}
if(a[i]=='A'){
cntAA[i+1]=cntAA[i]+1;
cntTA[i+1]=cntTA[i];
}
else{
cntTA[i+1]=cntTA[i]+1;
cntAA[i+1]=cntAA[i];
}
if(B[i]=='A'){
cntAB[i+1]=cntAB[i]+1;
cntTB[i+1]=cntTB[i];
}
else{
cntTB[i+1]=cntTB[i]+1;
cntAB[i+1]=cntAB[i];
}
}
}
int get_distance(int x,int y){
x++;
y++;
int noA=cntAA[y]-cntAA[x-1]-cntAB[y]+cntAB[x-1],noT=cntTA[y]-cntTA[x-1]-cntTB[y]+cntTB[x-1];
int res=cnt[y]-cnt[x-1];
if(noA!=0 or noT!=0) return -1;
return res/2;
}
컴파일 시 표준 에러 (stderr) 메시지
dna.cpp: In function 'void init(std::string, std::string)':
dna.cpp:17:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
17 | for(int i=0;i<a.size();++i){
| ~^~~~~~~~~| # | 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... |