제출 #166862

#제출 시각아이디문제언어결과실행 시간메모리
166862Eae02Genetics (BOI18_genetics)C++14
47 / 100
1846 ms49912 KiB
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
using namespace std;

uint64_t dna[4101][65];

int diff[4101][4101];

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int n, m, k;
	cin >> n >> m >> k;
	cin.ignore();
	
	for (int i = 0; i < n; i++) {
		string ln;
		getline(cin, ln);
		for (int j = 0; j < m; j++) {
			if (ln[j] == 'A')
				dna[i][j / 64] |= 1ULL << (j % 64);
		}
	}
	
	for (int a = 0; a < n; a++) {
		for (int b = a + 1; b < n; b++) {
			for (int i = 0; i < 65; i++) {
				diff[a][b] += __builtin_popcountll(dna[a][i] ^ dna[b][i]);
			}
		}
	}
	
	for (int a = 0; a < n; a++) {
		bool allK = true;
		for (int b = 0; b < n; b++) {
			if (b != a && diff[min(a, b)][max(a, b)] != k) {
				allK = false;
				break;
			}
		}
		if (allK) {
			cout << (a + 1) << "\n";
			return 0;
		}
	}
	
	cout << "?\n";
	return 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...