Submission #1210476

#TimeUsernameProblemLanguageResultExecution timeMemory
1210476olyamonkoMutating DNA (IOI21_dna)C++20
100 / 100
35 ms8020 KiB
#include "dna.h" using namespace std; #include <bits/stdc++.h> #define vt vector vt<vt<int>> pref(1e5+7, vt<int>(6, 0)); void init(std::string a, std::string b) { int n=a.size(); for(int i=1; i<=n; i++){ vt<char> p = {a[i-1], b[i-1]}; pref[i]=pref[i-1]; vt<char> x = {'A', 'T'}; if(p==x){ pref[i][5]++; } x = {'A', 'C'}; if(p==x){ pref[i][0]++; } x={'T', 'A'}; if(p==x){ pref[i][4]++; } x={'C', 'T'}; if(p==x){ pref[i][3]++; } x={'T', 'C'}; if(p==x){ pref[i][2]++; } x={'C', 'A'}; if(p==x){ pref[i][1]++; } } } int get_distance(int x, int y) { vt<int> p(6); for(int i=0; i<6; i++){ p[i]=pref[y+1][i]-pref[x][i]; } int ans=0; for(int i=0; i<3; i++){ int u = min(p[i*2], p[i*2+1]); p[i*2]-=u; p[i*2+1]-=u; ans+=u; //cout<<u<<"\n"; cout<<p[i*2]<<" "<<p[i*2+1]<<"\n"; } int u = min({p[0], p[3], p[4]}); p[0]-=u; p[3]-=u; p[4]-=u; ans+=u*2; //cout<<"||||||||||||||||\n"; u = min({p[1], p[2], p[5]}); p[1]-=u; p[2]-=u; p[5]-=u; ans+=u*2; if((p[0] || p[1] || p[2]|| p[3] || p[4] ||p[5])) return -1; return ans; }
#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...