結果
問題 | No.168 ものさし |
ユーザー |
![]() |
提出日時 | 2016-02-28 23:39:47 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 3,644 bytes |
コンパイル時間 | 1,226 ms |
コンパイル使用メモリ | 156,912 KB |
最終ジャッジ日時 | 2024-11-14 19:35:28 |
合計ジャッジ時間 | 1,637 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
main.cpp: In function ‘std::ostream& operator>>(std::istream&, std::tuple<_Tps ...>&)’: main.cpp:63:94: error: invalid initialization of reference of type ‘std::ostream&’ {aka ‘std::basic_ostream<char>&’} from expression of type ‘std::istream’ {aka ‘std::basic_istream<char>’} 63 | TMP_Ts ostream &operator>>(istream &is, tuple<T...> &x){ input_tuple<0, T...>(is, x); return is; } | ^~
ソースコード
/* template.cpp {{{ */#include <bits/stdc++.h>using namespace std;// #define int long long#define GET_MACRO(a, b, c, d, NAME, ...) NAME#define REP1(n) REP2(i_, n)#define REP2(i, n) REP3(i, 0, n)#define REP3(i, a, b) REP4(i, a, b, 1)#define REP4(i, a, b, s) for (long long i = (a); i < (long long)(b); i += (long long)(s))#define RREP1(n) RREP2(i_, n)#define RREP2(i, n) RREP3(i, 0, n)#define RREP3(i, a, b) RREP4(i, a, b, 1)#define RREP4(i, a, b, s) for (long long i = (b) - 1; i >= (long long)(a); i -= (long long)(s))#define rep(...) GET_MACRO(__VA_ARGS__, REP4, REP3, REP2, REP1)(__VA_ARGS__)#define rrep(...) GET_MACRO(__VA_ARGS__, RREP4, RREP3, RREP2, RREP1)(__VA_ARGS__)#define fs first#define sc second#define all(c) std::begin(c), std::end(c)#define pcnt(x) __builtin_popcountll(x)#define each(x, c) for (auto &&x : c)#define y0 y0_#define y1 y1_#define yn yn_#define TMP_T template<typename T>#define TMP_TU template<typename T, typename U>#define TMP_Ts template<typename ...T>#define TMP_NTs template<size_t N, typename ...T>#define TMP_CT template<bool C, typename T = void>#ifndef DEBUG#define cerr no_outputstruct NoOutput : ostream {TMP_T NoOutput &operator<<(const T &){ return *this; }} no_output;#endifusing uint = unsigned;using ll = long long;using ull = unsigned long long;using ld = long double;TMP_T using PQL = priority_queue<T, vector<T>, greater<T>>;TMP_T using PQG = priority_queue<T>;TMP_CT using enable_if_t = typename enable_if<C, T>::type;const ll LLINF = 1e18 + 10;#ifndef intconst int INF = 1e9 + 10;#elseconst int INF = LLINF;#endifconst int dx[] = {-1, 0, 1, 0, -1, 1, 1, -1};const int dy[] = {0, -1, 0, 1, -1, -1, 1, 1};TMP_T inline constexpr T sq(T x){ return x * x; }TMP_TU inline T& chmin(T &x, U y){ if (x > y) x = y; return x; }TMP_TU inline T& chmax(T &x, U y){ if (x < y) x = y; return x; }TMP_NTs enable_if_t<(N >= sizeof...(T))> input_tuple(istream &, tuple<T...> &){}TMP_NTs enable_if_t<(N < sizeof...(T))> input_tuple(istream &is, tuple<T...> &x){ is >> get<N>(x); input_tuple<N + 1, T...>(is, x); }TMP_Ts ostream &operator>>(istream &is, tuple<T...> &x){ input_tuple<0, T...>(is, x); return is; }TMP_TU ostream &operator>>(istream &is, pair<T, U> &x){ return is >> x.first >> x.second; }TMP_NTs enable_if_t<(N >= sizeof...(T))> print_tuple(ostream &, const tuple<T...> &){}TMP_NTs enable_if_t<(N < sizeof...(T))> print_tuple(ostream &os, const tuple<T...> &x){ os << (N > 0 ? " " : "") << get<N>(x); print_tuple<N + 1, T...>(os, x); }TMP_Ts ostream &operator<<(ostream &os, const tuple<T...> &x){ print_tuple<0, T...>(os, x); return os; }TMP_TU ostream &operator<<(ostream &os, const pair<T, U> &x){ return os << x.first << " " << x.second; }#undef TMP_T#undef TMP_TU#undef TMP_Ts#undef TMP_NTs#undef TMP_CTstruct prepare {prepare(){ios::sync_with_stdio(false);cin.tie(nullptr);cout << fixed << setprecision(12);cerr << fixed << setprecision(12);}} prepare_;/* }}} */int n;ll x[1000], y[1000];ll g[1000][1000];signed main(){cin >> n;rep(i, n) cin >> x[i] >> y[i];rep(i, n) rep(j, n) g[i][j] = sq(x[i] - x[j]) + sq(y[i] - y[j]);ll lb = 0, ub = 200000000;while (ub - lb > 1){ll md = (lb + ub) / 2;ll len = 100 * md * md;bool vis[1000] = {};queue<int> q;vis[0] = true;q.push(0);while (q.size()){int v = q.front(); q.pop();rep(i, n){if (vis[i]) continue;if (g[v][i] > len) continue;vis[i] = true;q.push(i);}}(vis[n - 1] ? ub : lb) = md;}cout << 10 * ub << endl;}