# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1190809 | vyaduct | Mutating DNA (IOI21_dna) | C++20 | 20 ms | 4516 KiB |
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const long double EPS = 1e-9;
void file(){
freopen("input.txt.txt","r",stdin);
freopen("output.txt.txt","w",stdout);
}
#define V vector
#define pb push_back
#define P pair
#define S second
#define F first
#define all(v) v.begin(),v.end()
int pref[(int)1e5+1][2];
int pref2[(int)1e5+1][2];
int dif[(int)1e5+1];
void init(string a,string b){
a='.'+a;
b='.'+b;
pref[0][0]=0;
pref[0][1]=0;
pref2[0][0]=0;
pref2[0][1]=0;
dif[0]=0;
int n=a.length();
for(int i=1;i<=n;i++){
pref[i][0]=pref[i-1][0];
pref[i][1]=pref[i-1][1];
pref2[i][0]=pref2[i-1][0];
pref2[i][1]=pref2[i-1][1];
dif[i]=dif[i-1];
if(a[i]=='A'){
pref[i][0]++;
}
else{
pref[i][1]++;
}
if(b[i]=='A'){
pref2[i][0]++;
}
else{
pref2[i][1]++;
}
if(a[i]!=b[i]){
dif[i]++;
}
}
}
int get_distance(int x, int y){
swap(x,y);
x++,y++;
if(pref[x][0]-pref[y-1][0]!=pref2[x][0]-pref2[y-1][0])return -1;
if(pref[x][1]-pref[y-1][1]!=pref2[x][1]-pref2[y-1][1])return -1;
return (dif[x]-dif[y-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... |