Submission #1142656

#TimeUsernameProblemLanguageResultExecution timeMemory
1142656sam12345678910112Mutating DNA (IOI21_dna)C++20
0 / 100
305 ms20532 KiB
#include "dna.h"
#include<bits/stdc++.h>
using namespace std;
string A,B;

map<int,int>at;
map<int,int>ta;
map<int,int>ac;
map<int,int>ca;
map<int,int>tc;
map<int,int>ct;

void init(string a, string b){
    at[-1]=0;
     ac[-1]=0;
      tc[-1]=0;
       ta[-1]=0;
        ct[-1]=0;
         ca[-1]=0;
    string A=a;
    string B=b;
    for(int so=0;so<a.size();so++){
        if(A[so]=='A'&&B[so]=='T'){at[so]+=1+at[so-1]; }
        if(A[so]=='T'&&B[so]=='A'){at[so]+=1+at[so-1];}
        if(A[so]=='A'&&B[so]=='C'){at[so]+=1+at[so-1];}
        if(A[so]=='C'&&B[so]=='A'){at[so]+=1+at[so-1];}
        if(A[so]=='C'&&B[so]=='T'){at[so]+=1+at[so-1];}
        if(A[so]=='T'&&B[so]=='C'){at[so]+=1+at[so-1];}
                            
    }
  
}
int get_distance(int x, int y){
 if(ac[y]+at[y]-ac[x-1]-at[x-1]==ca[y]+ta[y]-ca[x-1]-ta[x-1]&&ca[y]+ct[y]-ca[x-1]-ct[x-1]==ac[y]+tc[y]-ac[x-1]-tc[x-1]&&tc[y]+ta[y]-tc[x-1]-ta[x-1]==ct[y]+at[y]-ct[x-1]-at[x-1]){
     int ans=0;
     ans=(min(at[y]-at[x-1],ta[y]-ta[x-1]))+min(ac[y]-ac[x-1],ca[y]-ca[x-1])+min(tc[y]-tc[x-1],ct[y]-ct[x-1])+(2*abs(at[y]-at[x-1]-ta[y]+ta[x-1]));
     return ans;
 }
 
 
 else {return -1;}
}
#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...