# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1122579 | I_FloPPed21 | DNA 돌연변이 (IOI21_dna) | C++20 | 0 ms | 0 KiB |
#include <iostream>
using namespace std;
const int N=1e5+5;
int sp_a[N],sp_b[N];
int a1[N],b1[N],c1[N];
int a2[N],b2[N],c2[N];
int difs[N];
int get_distance(int x,int y)
{
x++,y++;
if((a1[y]-a1[x-1])!=(a2[y]-a2[x-1]))
return -1;
if((b1[y]-b1[x-1])!=(b2[y]-b2[x-1]))
return -1;
if((c1[y]-c1[x-1])!=(c2[y]-c2[x-1]))
return -1;
int t=difs[y]-difs[x-1];
return t/2+t%2;
}
void init(string a,string b)
{
a="#"+a;
b="#"+a;
int d=a.size();
for(int i=1; i<=d; i++)
{
a1[i]+=a1[i-1];
a2[i]+=a[i-1];
b1[i]+=b1[i-1];
b2[i]+=b2[i-1];
c1[i]+=a1[i-1];
c2[i]+=a2[i-1];
if(a[i]=='A')
a1[i]++;
if(a[i]=='B')
b1[i]++;
if(a[i]=='T')
c1[i]++;
if(b[i]=='A')
a2[i]++;
if(b[i]=='B')
b2[i]++;
if(b[i]=='T')
c2[i]++;
difs[i]+=difs[i-1];
if(a[i]!=b[i])
difs[i]++;
}
}
int main()
{
return 0;
}