Submission #1135706

#TimeUsernameProblemLanguageResultExecution timeMemory
1135706xnqsGenetics (BOI18_genetics)C++20
27 / 100
2097 ms28380 KiB
//#pragma GCC optimize("Ofast,unroll-loops") //#pragma GCC target("avx2") #include <iostream> #include <fstream> #include <vector> #include <queue> #include <utility> #include <algorithm> #include <bitset> const int MAX_DIM = 4100; int x, y, tgt; char str[MAX_DIM][4101]; int d[MAX_DIM][MAX_DIM]; std::bitset<MAX_DIM> bs[MAX_DIM]; inline int dist(std::bitset<MAX_DIM>& a, std::bitset<MAX_DIM>& b) { a ^= b; int ret = a.count(); a ^= b; return ret; } int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); std::cout.tie(NULL); std::cin >> x >> y >> tgt; for (int i = 0; i < x; i++) { std::cin >> str[i]; } for (auto ch : {'A', 'C', 'T', 'G'}) { //std::cout << ch << "\n"; for (int i = 0; i < x; i++) { for (int j = 0; j < y; j++) { bs[i][j] = (str[i][j]==ch); } //std::cout << bs[i] << "\n"; } for (int i = 0; i < x; i++) { for (int j = 0; j < x; j++) { if (i==j) { continue; } d[i][j] += dist(bs[i],bs[j]); } } //std::cout << "\n"; } for (int i = 0; i < x; i++) { bool ok = 1; for (int j = 0; j < x && ok; j++) { if (i==j) { continue; } //std::cout << d[i][j] << " "; if ((d[i][j]>>1)!=tgt) { ok = 0; } } //std::cout << "\n"; if (ok) { std::cout << i+1 << "\n"; return 0; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...