제출 #530881

#제출 시각아이디문제언어결과실행 시간메모리
530881knon0501DNA 돌연변이 (IOI21_dna)C++17
0 / 100
35 ms8176 KiB

#include<bits/stdc++.h>
using namespace std;
int sa[100005][3];
int sb[100005][3];
int e[100005][3][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]]]++;
		for(int j=0 ; j<3 ; j++)
			for(int k=0 ; k<3 ; k++)
				e[i][j][k]=e[i-1][j][k];
		e[i][c[a[i-1]]][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=0 ; i<3 ; i++)
		for(int j=0 ; j<3 ; j++)
			d[i][j]=e[y][i][j]-e[x-1][i][j];

	int ans=0;
	int cnt=0;
	for(int i=0 ; i<3 ; i++){
		for(int j=0 ; j<3 ; j++){
			int x=min(d[i][j],d[j][i]);
			d[i][j]-=x;
			d[j][i]-=x;
          	if(i!=j){
				ans+=x;
            }
			cnt+=d[i][j];
		}
	}

	return ans+cnt*2/3;
}

컴파일 시 표준 에러 (stderr) 메시지

dna.cpp: In function 'void init(std::string, std::string)':
dna.cpp:24:17: warning: array subscript has type 'char' [-Wchar-subscripts]
   24 |   sa[i][c[a[i-1]]]++;
      |                 ^
dna.cpp:25:17: warning: array subscript has type 'char' [-Wchar-subscripts]
   25 |   sb[i][c[b[i-1]]]++;
      |                 ^
dna.cpp:29:16: warning: array subscript has type 'char' [-Wchar-subscripts]
   29 |   e[i][c[a[i-1]]][c[b[i-1]]]++;
      |                ^
dna.cpp:29:27: warning: array subscript has type 'char' [-Wchar-subscripts]
   29 |   e[i][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...