Submission #530875

#TimeUsernameProblemLanguageResultExecution timeMemory
530875knon0501Mutating DNA (IOI21_dna)C++17
0 / 100
1581 ms5808 KiB
#include<bits/stdc++.h>
using namespace std;
int sa[100005][3];
int sb[100005][3];
int c[200];
int n;
string a,b;
void init(std::string aa, std::string bb) {
	a=aa;
	b=bb;
	n=a.length();
	c['A']=0;
	c['T']=1;
	c['C']=2;
	for(int i=1 ; i<=n ; i++){
		sa[i][0]=sa[i-1][0];
		sb[i][0]=sb[i-1][0];
		sa[i][1]=sa[i-1][1];
		sb[i][1]=sb[i-1][1];
		sa[i][2]=sa[i-1][2];
		sb[i][2]=sb[i-1][2];
		sa[i][c[a[i-1]]]++;
		sb[i][c[b[i-1]]]++;
	}
}

int get_distance(int x, int y) {
	x++;
	y++;
	for(int i=0 ; i<3 ; i++)
		if(sa[y][i]-sa[x-1][i]!=sb[y][i]-sb[x-1][i])return -1;

	int d[3][3]={0,};

	for(int i=x ; i<=y ; i++){
		d[c[a[i-1]]][c[b[i-1]]]++;
	}
	int ans=0;
	int cnt=0;
	for(int i=0 ; i<3 ; i++){
		for(int j=0 ; j<3 ; j++){
			while(d[i][j] && d[j][i]){
				d[i][j]--;
				d[j][i]--;
				if(i!=j)ans++;
			}
			cnt+=d[i][j];
		}
	}

	return ans+cnt*2/3;
}

Compilation message (stderr)

dna.cpp: In function 'void init(std::string, std::string)':
dna.cpp:22:17: warning: array subscript has type 'char' [-Wchar-subscripts]
   22 |   sa[i][c[a[i-1]]]++;
      |                 ^
dna.cpp:23:17: warning: array subscript has type 'char' [-Wchar-subscripts]
   23 |   sb[i][c[b[i-1]]]++;
      |                 ^
dna.cpp: In function 'int get_distance(int, int)':
dna.cpp:36:13: warning: array subscript has type 'char' [-Wchar-subscripts]
   36 |   d[c[a[i-1]]][c[b[i-1]]]++;
      |             ^
dna.cpp:36:24: warning: array subscript has type 'char' [-Wchar-subscripts]
   36 |   d[c[a[i-1]]][c[b[i-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...