結果
問題 | No.2375 watasou and hibit's baseball |
ユーザー |
![]() |
提出日時 | 2023-07-07 21:44:23 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 68 ms / 2,000 ms |
コード長 | 3,183 bytes |
コンパイル時間 | 1,266 ms |
コンパイル使用メモリ | 130,652 KB |
最終ジャッジ日時 | 2025-02-15 07:04:05 |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 36 |
ソースコード
#ifndef LOCAL#define FAST_IO#endif// ============#include <algorithm>#include <array>#include <bitset>#include <cassert>#include <cmath>#include <iomanip>#include <iostream>#include <list>#include <map>#include <numeric>#include <queue>#include <random>#include <set>#include <stack>#include <string>#include <tuple>#include <unordered_map>#include <unordered_set>#include <utility>#include <vector>#define OVERRIDE(a, b, c, d, ...) d#define REP2(i, n) for (i32 i = 0; i < (i32)(n); ++i)#define REP3(i, m, n) for (i32 i = (i32)(m); i < (i32)(n); ++i)#define REP(...) OVERRIDE(__VA_ARGS__, REP3, REP2)(__VA_ARGS__)#define PER(i, n) for (i32 i = (i32)(n) - 1; i >= 0; --i)#define ALL(x) begin(x), end(x)using namespace std;using u32 = unsigned int;using u64 = unsigned long long;using i32 = signed int;using i64 = signed long long;using f64 = double;using f80 = long double;template <typename T>using Vec = vector<T>;template <typename T>bool chmin(T &x, const T &y) {if (x > y) {x = y;return true;}return false;}template <typename T>bool chmax(T &x, const T &y) {if (x < y) {x = y;return true;}return false;}#ifdef INT128using u128 = __uint128_t;using i128 = __int128_t;istream &operator>>(istream &is, i128 &x) {i64 v;is >> v;x = v;return is;}ostream &operator<<(ostream &os, i128 x) {os << (i64)x;return os;}istream &operator>>(istream &is, u128 &x) {u64 v;is >> v;x = v;return is;}ostream &operator<<(ostream &os, u128 x) {os << (u64)x;return os;}#endif[[maybe_unused]] constexpr i32 INF = 1000000100;[[maybe_unused]] constexpr i64 INF64 = 3000000000000000100;struct SetUpIO {SetUpIO() {#ifdef FAST_IOios::sync_with_stdio(false);cin.tie(nullptr);#endifcout << fixed << setprecision(15);}} set_up_io;// ============#ifdef DEBUGF#else#define DBG(x) (void)0#endifint main() {i32 n, a, b;cin >> n >> a >> b;Vec<i32> x(n), y(n), k(n);REP(i, n) { cin >> x[i] >> y[i] >> k[i]; }const auto dist2 = [&](i32 i, i32 j) -> i32 {return abs(x[i] - x[j]) + abs(y[i] - y[j]);};Vec<Vec<Vec<i32>>> ok(n, Vec<Vec<i32>>(n, Vec<i32>(1 << n, 0)));REP(i, n) REP(j, n) {if (i != j && (dist2(i, j) >= a || abs(k[i] - k[j]) >= b)) {ok[i][j][(1 << i) ^ (1 << j)] = 1;}}REP(st, 1 << n) REP(i, n) REP(j, n) {if (!(st & (1 << i))) {continue;}if (!(st & (1 << j))) {continue;}if (!ok[i][j][st]) {continue;}REP(l, n) {if (!!(st & (1 << l))) {continue;}if (!!(st & (1 << l))) {continue;}if (abs(k[l] - k[j]) >= b || dist2(l, i) + dist2(l, j) >= a) {ok[j][l][st ^ (1 << l)] = 1;}}}i32 ans = 1;REP(i, n) REP(j, n) REP(st, 1 << n) if (ok[i][j][st]) {chmax(ans, __builtin_popcount(st));}cout << ans << '\n';}