Submission #1293944

#TimeUsernameProblemLanguageResultExecution timeMemory
1293944dostsGenetics (BOI18_genetics)C++20
27 / 100
2095 ms3948 KiB
#include <bits/stdc++.h> #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2") #define int long long #define pii pair<int,int> #define vi vector<int> #define ff first #define ss second #define sp << " " << #define all(x) x.begin(),x.end() #define big(x) ((int)(x.size())) using namespace std; const int MOD = 998244353, LIM = 1e6+1, inf = 2e18,N = 2e5+1; void solve() { int n,m,k; cin >> n >> m >> k; vector<string> strs(n+1); vi stk; auto calcdiff =[&](int i,int j) -> int { int ans = 0; for (int p = 0;p<m;p++) { ans+=strs[i][p] != strs[j][p]; if (ans > k) return ans; if (ans+(m-p-1) < k) return ans; } return ans; }; vi ord(n+1); iota(all(ord),0ll); shuffle(1+all(ord),mt19937()); for (int i=1;i<=n;i++) cin >> strs[i]; for (int i=1;i<=n;i++) { int fl = 1; while (!stk.empty() && calcdiff(stk.back(),ord[i]) != k) { stk.pop_back(); fl = 0; } if (fl) stk.push_back(ord[i]); } shuffle(all(stk),mt19937()); while (!stk.empty()) { int fl= 1; for (int j = 1;j<=n;j++) { if (j != stk.back() && calcdiff(stk.back(),j) != k) { fl = 0; break; } } if (fl) { cout << stk.back() << '\n'; return; } stk.pop_back(); } } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); int t = 1; //cin >> t; while (t --> 0) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...