Submission #439966

#TimeUsernameProblemLanguageResultExecution timeMemory
439966BT21tataDNA 돌연변이 (IOI21_dna)C++17
35 / 100
54 ms5276 KiB
#include "dna.h" #include "bits/stdc++.h" using namespace std; int a[100005][3], b[100005][3], dif[100005]; void init(string A, string B) { for(int i=0; i<(int)A.length(); i++) { if(A[i]!=B[i]) dif[i+1]=1; dif[i+1]+=dif[i]; if(A[i]=='C') a[i+1][1]=1; else if(A[i]=='T') a[i+1][2]=1; else a[i+1][0]=1; if(B[i]=='C') b[i+1][1]=1; else if(B[i]=='T') b[i+1][2]=1; else b[i+1][0]=1; a[i+1][0]+=a[i][0]; a[i+1][1]+=a[i][1]; a[i+1][2]+=a[i][2]; b[i+1][0]+=b[i][0]; b[i+1][1]+=b[i][1]; b[i+1][2]+=b[i][2]; } } int get_distance(int x, int y) { int diff=dif[y+1]-dif[x]; int cnt1[3]={a[y+1][0]-a[x][0], a[y+1][1]-a[x][1], a[y+1][2]-a[x][2]}; int cnt2[3]={b[y+1][0]-b[x][0], b[y+1][1]-b[x][1], b[y+1][2]-b[x][2]}; if(cnt1[0]!=cnt2[0] or cnt1[1]!=cnt2[1] or cnt1[2]!=cnt2[2]) return -1; return diff/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...