Submission #1185102

#TimeUsernameProblemLanguageResultExecution timeMemory
1185102lopkusGenetics (BOI18_genetics)C++20
46 / 100
2087 ms114268 KiB
#include <bits/stdc++.h> using i64 = long long; using u64 = unsigned long long; using u32 = unsigned; using u128 = unsigned __int128; const int N = 13001; std::bitset<N> b[4101]; void solve() { int n, m, k; std::cin >> n >> m >> k; std::vector<std::vector<int>> a(n + 1, std::vector<int>(m + 1)); for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) { char x; std::cin >> x; if(x == 'A') { a[i][j] = 0; } else if(x == 'C') { a[i][j] = 1; } else if(x == 'G') { a[i][j] = 2; } else { a[i][j] = 3; } } } std::vector<std::vector<int>> ans(n + 1, std::vector<int>(n + 1)); int node = n + 1; for(int j = 1; j <= m; j++) { std::vector<int> index[4]; for(int i = 1; i <= n; i++) { index[a[i][j]].push_back(i); } for(int x = 0; x < 4; x++) { if(index[x].empty()) { continue; } for(auto a : index[x]) { b[a].set(node); } node += 1; } } for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { if(i == j) { continue; } ans[i][j] = (b[i] & b[j]).count(); } } for(int i = 1; i <= n; i++) { int is = 1; for(int j = 1; j <= n; j++) { if(i == j) { continue; } is &= (m - ans[i][j] == k); } if(is) { std::cout << i; return; } } } int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int t = 1; //std::cin >> t; while (t--) { solve(); } 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...