답안 #955106

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
955106 2024-03-29T11:54:23 Z IUA_Hasin DNA 돌연변이 (IOI21_dna) C++17
35 / 100
29 ms 9296 KB
#include <bits/stdc++.h>
 
#define endl                                "\n"
#define finp                                for(int i=0; i<n; i++)
#define fknp                                for(int k=0; k<n; k++)
#define yeap                                cout<<"YES"<<endl
#define nope                                cout<<"NO"<<endl
#define inpintn                             int n; cin>>n
#define inpintarrn                          int arr[n]; for(int i=0; i<n; i++){cin>>arr[i];}
#define inpllarrn                           long long arr[n]; for(int i=0; i<n; i++){cin>>arr[i];}
#define ll                                  long long
 
using namespace std;

#include "dna.h"

ll const N = 1e5+10;
string aa, bb;
ll arra[N], arrc[N], arrt[N];
ll brra[N], brrc[N], brrt[N];
ll diff[N];

void init(std::string a, std::string b) {
	aa = a;
	bb = b;
	ll siz = a.size();
	for(int i=0; i<siz; i++){
		if(a[i]=='A'){
			arra[i+1] = arra[i]+1;
			arrc[i+1] = arrc[i];
			arrt[i+1] = arrt[i];
		} else if(a[i]=='C'){
			arra[i+1] = arra[i];
			arrc[i+1] = arrc[i]+1;
			arrt[i+1] = arrt[i];
		} else {
			arra[i+1] = arra[i];
			arrc[i+1] = arrc[i];
			arrt[i+1] = arrt[i]+1;
		}

		if(b[i]=='A'){
			brra[i+1] = brra[i]+1;
			brrc[i+1] = brrc[i];
			brrt[i+1] = brrt[i];
		} else if(b[i]=='C'){
			brra[i+1] = brra[i];
			brrc[i+1] = brrc[i]+1;
			brrt[i+1] = brrt[i];
		} else {
			brra[i+1] = brra[i];
			brrc[i+1] = brrc[i];
			brrt[i+1] = brrt[i]+1;
		}
	}

	for(int i=0; i<siz; i++){
		char p = aa[i];
		char q = bb[i];
		if(p!=q){
			diff[i+1] = diff[i]+1;
		} else {
			diff[i+1] = diff[i];
		}
	}

}

int get_distance(int x, int y) {
	x = x+1;
	y = y+1;
	// ll siz1 = aa.size();
	// ll diff[siz1+1];
	// diff[0] = 0;
	// for(int i=0; i<siz1; i++){
	// 	char p = aa[i];
	// 	char q = bb[i];
	// 	if(p!=q){
	// 		diff[i+1] = diff[i]+1;
	// 	} else {
	// 		diff[i+1] = diff[i];
	// 	}
	// }

	ll xa = arra[y]-arra[x-1];
	ll xc = arrc[y]-arrc[x-1];
	ll xt = arrt[y]-arrt[x-1];	
	ll ya = brra[y]-brra[x-1];
	ll yc = brrc[y]-brrc[x-1];
	ll yt = brrt[y]-brrt[x-1];
	ll d = diff[y]-diff[x-1];

	if(xa==ya && xc==yc && xt==yt){
		ll ans = d/2;
		return ans;
	} else {
		return -1;
	}

}
# 결과 실행 시간 메모리 Grader output
1 Correct 25 ms 7760 KB Output is correct
2 Correct 26 ms 8784 KB Output is correct
3 Incorrect 25 ms 8016 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 4 ms 6492 KB Output is correct
5 Correct 5 ms 6540 KB Output is correct
6 Correct 5 ms 6492 KB Output is correct
7 Correct 4 ms 6236 KB Output is correct
8 Correct 5 ms 6488 KB Output is correct
9 Correct 4 ms 6488 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 4 ms 6492 KB Output is correct
5 Correct 5 ms 6540 KB Output is correct
6 Correct 5 ms 6492 KB Output is correct
7 Correct 4 ms 6236 KB Output is correct
8 Correct 5 ms 6488 KB Output is correct
9 Correct 4 ms 6488 KB Output is correct
10 Correct 26 ms 8028 KB Output is correct
11 Correct 27 ms 8876 KB Output is correct
12 Correct 27 ms 8784 KB Output is correct
13 Correct 28 ms 8784 KB Output is correct
14 Correct 27 ms 9132 KB Output is correct
15 Correct 25 ms 8284 KB Output is correct
16 Correct 29 ms 9124 KB Output is correct
17 Correct 27 ms 8528 KB Output is correct
18 Correct 27 ms 9100 KB Output is correct
19 Correct 26 ms 9040 KB Output is correct
20 Correct 25 ms 8788 KB Output is correct
21 Correct 25 ms 9296 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 4 ms 6492 KB Output is correct
5 Correct 5 ms 6540 KB Output is correct
6 Correct 5 ms 6492 KB Output is correct
7 Correct 4 ms 6236 KB Output is correct
8 Correct 5 ms 6488 KB Output is correct
9 Correct 4 ms 6488 KB Output is correct
10 Incorrect 4 ms 5980 KB Output isn't correct
11 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 25 ms 7760 KB Output is correct
2 Correct 26 ms 8784 KB Output is correct
3 Incorrect 25 ms 8016 KB Output isn't correct
4 Halted 0 ms 0 KB -