Submission #839289

#TimeUsernameProblemLanguageResultExecution timeMemory
839289mihaibunMutating DNA (IOI21_dna)C++17
71 / 100
1540 ms4328 KiB
#include <bits/stdc++.h> using namespace std; #include "dna.h" int A[100003],B[100003],n; void init(string a, string b) { n = a.size(); for(int i = 0; i < n; i++){ if(a[i]=='A') A[i+1] = 1; if(a[i]=='T') A[i+1] = 2; if(a[i]=='C') A[i+1] = 3; if(b[i]=='A') B[i+1] = 1; if(b[i]=='T') B[i+1] = 2; if(b[i]=='C') B[i+1] = 3; } } int get_distance(int x, int y) { int sol = 0,a[4],b[4],x1=0,y1=0,z=0,t=0,u=0,v=0; a[1] = 0; a[2] = 0; a[3] = 0; b[1] = 0; b[2] = 0; b[3] = 0; for(int i = x+1; i <= y+1; i++){ a[A[i]]++; b[B[i]]++; } if((a[1]!=b[1])or(a[2]!=b[2])or(a[3]!=b[3])) sol = -1; else{ for(int i = x+1; i <= y+1; i++){ if((A[i]==1)and(B[i]==2)) x1++; if((A[i]==1)and(B[i]==3)) y1++; if((A[i]==2)and(B[i]==1)) z++; if((A[i]==2)and(B[i]==3)) t++; if((A[i]==3)and(B[i]==1)) u++; if((A[i]==3)and(B[i]==2)) v++; } sol = min(x1,z)+min(y1,u)+min(t,v)+2*(max(x1,z)-min(x1,z)); } return sol; }
#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...