제출 #1283118

#제출 시각아이디문제언어결과실행 시간메모리
1283118Faisal_SaqibDNA 돌연변이 (IOI21_dna)C++20
100 / 100
35 ms6128 KiB
#include <string> #include <iostream> using namespace std; const int N=1e5+100; int pre[3][3][N]; void init(string a,string b) { for(int i=0;i<a.size();i++) { if(a[i]=='T') a[i]='B'; if(b[i]=='T') b[i]='B'; for(int k=0;k<3;k++) for(int j=0;j<3;j++) pre[k][j][i+1]=pre[k][j][i]; pre[a[i]-'A'][b[i]-'A'][i+1]++; } } int get_distance(int x, int y) { x++; y++; int _00=pre[0][0][y]-pre[0][0][x-1];// int _01=pre[0][1][y]-pre[0][1][x-1];// int _02=pre[0][2][y]-pre[0][2][x-1];// int _10=pre[1][0][y]-pre[1][0][x-1];// int _11=pre[1][1][y]-pre[1][1][x-1];// int _12=pre[1][2][y]-pre[1][2][x-1];// int _20=pre[2][0][y]-pre[2][0][x-1];// int _21=pre[2][1][y]-pre[2][1][x-1];// int _22=pre[2][2][y]-pre[2][2][x-1];// int mv=0; int mn=min(_01,_10); _01-=mn; _10-=mn; mv+=mn; mn=min(_02,_20); _02-=mn; _20-=mn; mv+=mn; mn=min(_12,_21); _12-=mn; _21-=mn; mv+=mn; mn=min(min(_02,_21),_10); _02-=mn; _21-=mn; _10-=mn; mv+=(2*mn); mn=min(min(_01,_20),_12); _01-=mn; _20-=mn; _12-=mn; mv+=(2*mn); if((_01+_02+_10+_12+_20+_21)>0) return -1; return mv; }
#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...