Submission #1145513

#TimeUsernameProblemLanguageResultExecution timeMemory
1145513LeonidCukDNA 돌연변이 (IOI21_dna)C++20
100 / 100
23 ms6152 KiB
#include <bits/stdc++.h> using namespace std; int pf[100001][3][3]; void init(string a, string b) { int n=a.size(); map<char,int>m={{'A',0},{'C',1},{'T',2}}; for(int j=0;j<3;j++) { for(int z=0;z<3;z++) { pf[0][j][z]=0; } } for(int i=1;i<=n;i++) { for(int j=0;j<3;j++) { for(int z=0;z<3;z++)pf[i][j][z]=pf[i-1][j][z]; } pf[i][m[a[i-1]]][m[b[i-1]]]++; } } int get_distance(int x, int y) { int temp[3][3]; for(int j=0;j<3;j++) { for(int i=0;i<3;i++) { temp[i][j]=(pf[y+1][i][j]-pf[x][i][j]); } } int sum1=0; for(int i=0;i<3;i++) { if(temp[i][(i+1)%3]+temp[i][(i+2)%3]!=temp[(i+1)%3][i]+temp[(i+2)%3][i])return -1; sum1+=(temp[i][(i+1)%3]+temp[i][(i+2)%3]); } int sum=0; sum+=min(temp[0][1],temp[1][0]); sum+=min(temp[1][2],temp[2][1]); sum+=min(temp[0][2],temp[2][0]); if(sum*2!=sum1)sum+=((sum1-sum*2)/3)*2; return sum; }
#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...