Submission #1142242

#TimeUsernameProblemLanguageResultExecution timeMemory
1142242redacodeMutating DNA (IOI21_dna)C++20
0 / 100
170 ms53440 KiB
#include<bits/stdc++.h>
using namespace std;

vector<map<string,int>> V(1e5);
string ax,bx;
void init(std::string a, std::string b) {
	ax=a,bx=b;
	int cnt =0;
	string s = "";
	s+=a[0];
	s+=b[0];
	string arr[6] = {"AT","TA","AC","CA","CT","TC"};
	for(auto x: arr){
	    if(x==s){
	       V[0][x]=1;
	    }else{
	       V[0][x]=0;
	    }
	}
	for(int i=1;i<a.size();i++){
	    s = "";
	    s += a[i];
	    s += b[i];
	    //cout << s;
	    for(auto x: arr){
	        if(x==s){
	            V[i][x]=V[i-1][x]+1;
	            //c//out << x << V[i][x] <<endl;
	        }else{
	            V[i][x]=V[i-1][x];
	        }
	    }
	}
	
}

int get_distance(int x, int y) {
	int cnt =0;
	int r =0;
	string arr[6] = {"AT","TA","AC","CA","CT","TC"};
	
    cnt += min(V[y]["AT"]-V[x-1]["AT"],V[y]["TA"]-V[x-1]["TA"]);
    r += max(V[y]["AT"]-V[x-1]["AT"],V[y]["TA"]-V[x-1]["TA"]) - min(V[y]["AT"]-V[x-1]["AT"],V[y]["TA"]-V[x-1]["TA"]);
    //cout << cnt<< " " << r<<endl;
    cnt += min(V[y]["AC"]-V[x-1]["AC"],V[y]["CA"]-V[x-1]["CA"]);
    r += max(V[y]["AC"]-V[x-1]["AC"],V[y]["CA"]-V[x-1]["CA"]) - min(V[y]["AC"]-V[x-1]["AC"],V[y]["CA"]-V[x-1]["CA"]);
    //cout << cnt<< " " << r<<endl;
    cnt += min(V[y]["CT"]-V[x-1]["CT"],V[y]["TC"]-V[x-1]["TC"]);
    r += max(V[y]["CT"]-V[x-1]["CT"],V[y]["TC"]-V[x-1]["TC"]) - min(V[y]["CT"]-V[x-1]["CT"],V[y]["TC"]-V[x-1]["TC"]);
    //cout << cnt<< " " << r<<endl;
    cnt += r*2/3;
    return cnt;
}
#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...