Submission #866180

#TimeUsernameProblemLanguageResultExecution timeMemory
866180lomtaMutating DNA (IOI21_dna)C++17
100 / 100
34 ms5400 KiB
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 5; int pref1[N],pref2[N],pref3[N],pref4[N]; void init(string a, string b) { int n=a.size(); pref1[0]=0; for(int i=0;i<n;i++){ pref1[i+1]=pref1[i]; if(a[i]=='A' && b[i]=='T'){ pref1[i+1]++; } if(a[i]=='T' && b[i]=='A'){ pref1[i+1]--; } } pref2[0]=0; for(int i=0;i<n;i++){ pref2[i+1]=pref2[i]; if(a[i]=='T' && b[i]=='C'){ pref2[i+1]++; } if(a[i]=='C' && b[i]=='T'){ pref2[i+1]--; } } pref3[0]=0; for(int i=0;i<n;i++){ pref3[i+1]=pref3[i]; if(a[i]=='C' && b[i]=='A'){ pref3[i+1]++; } if(a[i]=='A' && b[i]=='C'){ pref3[i+1]--; } } pref4[0]=0; for(int i=0;i<n;i++){ pref4[i+1]=pref4[i]; if(a[i]==b[i]){ pref4[i+1]++; } } } int get_distance(int x, int y) { int sz=y-x+1; x++; y++; x--; int a1=pref1[y]-pref1[x]; int b1=pref2[y]-pref2[x]; int c1=pref3[y]-pref3[x]; int d1=pref4[y]-pref4[x]; /* cout<<"a1: "<<a1<<endl; cout<<"b1: "<<b1<<endl; cout<<"c1: "<<c1<<endl; */ if(a1==b1 && b1==c1 && c1==a1){ return (sz-abs(a1)-abs(b1)-abs(c1)-abs(d1))/2+(abs(a1)+abs(b1)+abs(c1))/3*2; } 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...