Submission #397747

#TimeUsernameProblemLanguageResultExecution timeMemory
397747KoDAlternating Current (BOI18_alternating)C++17
0 / 100
3068 ms51964 KiB
#include <bits/stdc++.h> using ll = long long; template <class T> using Vec = std::vector<T>; using Bit = std::bitset<4100>; std::random_device dev; std::default_random_engine gen(dev() ^ std::clock()); int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); int N, M, K; std::cin >> N >> M >> K; if (N <= 100 and M <= 100) { Vec<Vec<char>> S(N, Vec<char>(M)); for (auto& v: S) { for (auto& x: v) { std::cin >> x; } } for (int i = 0; i < N; ++i) { bool ok = true; for (int j = 0; j < N; ++j) { if (i == j) continue; int cnt = 0; for (int k = 0; k < M; ++k) { cnt += (S[i][k] != S[j][k]); } if (cnt != K) { ok = false; break; } } if (ok) { std::cout << i + 1 << '\n'; } } return 0; } Vec<Bit> bit(N); for (auto& b: bit) { for (int i = 0; i < M; ++i) { char c; std::cin >> c; if (c == 'C') { b.set(i); } } } Vec<bool> good(N, true); Vec<int> order(N); std::iota(order.begin(), order.end(), 0); std::shuffle(order.begin(), order.end(), gen); Vec<Vec<int>> memo(N, Vec<int>(N)); for (const auto i: order) { if (!good[i]) continue; for (const auto j: order) { if (i != j) { if (memo[i][j] == 0) { memo[i][j] = ((int) (bit[i] ^ bit[j]).count() == K ? 1 : -1); } if (memo[i][j] == -1) { good[i] = good[j] = false; break; } } } if (good[i]) { 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...
#Verdict Execution timeMemoryGrader output
Fetching results...