# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
443828 | Khizri | Mutating DNA (IOI21_dna) | C++17 | 46 ms | 4804 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "dna.h"
#include <bits/stdc++.h>
using namespace std;
#define all(v) (v).begin(),(v).end()
const int mxn=2e5+5;
string a,b;
int dp[mxn],la[mxn],ra[mxn],lb[mxn],rb[mxn];
void init(std::string A, std::string B) {
a=A,b=B;
if(a[0]!=b[0]){
dp[0]=1;
}
if(a[0]=='A'){
la[0]=1;
}
else{
ra[0]=1;
}
if(b[0]=='A'){
lb[0]=1;
}
else{
rb[0]=1;
}
for(int i=1;i<a.size();i++){
dp[i]=dp[i-1];
la[i]=la[i-1];
ra[i]=ra[i-1];
lb[i]=lb[i-1];
rb[i]=rb[i-1];
if(a[i]!=b[i]){
dp[i]=dp[i-1]+1;
}
if(a[i]=='A'){
la[i]=la[i-1]+1;
}
else{
ra[i]=ra[i-1]+1;
}
if(b[i]=='A'){
lb[i]=lb[i-1]+1;
}
else{
rb[i]=rb[i-1]+1;
}
}
}
int funk(int ind){
if(ind>=0){
return ind;
}
else{
return 200000;
}
}
int get_distance(int x, int y) {
//cout<<(la[y]-la[funk(x-1)])<<' '<<(lb[y]-lb[funk(x-1)])<<"---"<<(lb[y]-lb[funk(x-1)])<<' '<<(rb[y]-rb[funk(x-1)])<<endl;
if((la[y]-la[funk(x-1)])==(lb[y]-lb[funk(x-1)])&&(ra[y]-ra[funk(x-1)])==(rb[y]-rb[funk(x-1)])){
}
else{
return -1;
}
if((dp[y]-dp[funk(x-1)])%2==1){
return -1;
}
return (dp[y]-dp[funk(x-1)])/2;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |