結果
問題 |
No.979 Longest Divisor Sequence
|
ユーザー |
![]() |
提出日時 | 2019-10-07 22:55:14 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,612 bytes |
コンパイル時間 | 576 ms |
コンパイル使用メモリ | 66,944 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-15 00:33:33 |
合計ジャッジ時間 | 2,124 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | WA * 16 |
ソースコード
#include <cassert> #include <cstdint> #include <cstdlib> #include <iostream> #include <limits> namespace checker { std::string c_to_str(const int c) { if (c == '\n') { return "'\n'"; } if (c == std::char_traits<char>::eof()) { return "eof"; } return std::string({'\'', char(c), '\''}); } int c_scan() { return std::cin.get(); } template <class SignedInteger> SignedInteger i_scan(const SignedInteger lower, const SignedInteger upper, const int end) { using int_type = SignedInteger; int_type ret = 0; bool negative_flag = false; int c = c_scan(); if (c == '-') { negative_flag = true; c = c_scan(); } if (c < '0' || '9' < c) { std::cerr << "no digits" << std::endl; std::abort(); } while ('0' <= c && c <= '9') { c -= '0'; if (ret > (std::numeric_limits<int_type>::max() - c) / 10) { std::cerr << "overflow" << std::endl; std::abort(); } ret = ret * 10 + c; c = c_scan(); }; if (c != end) { std::cerr << "expected " << c_to_str(end) << ", found " << c_to_str(c) << std::endl; std::abort(); } if (negative_flag) { ret = -ret; } if (ret < lower || upper < ret) { std::cerr << "range was [" << lower << ", " << upper << "], found " << ret << std::endl; std::abort(); } return ret; } void check() { int n = i_scan(1, 300000, '\n'); for (int i = 0; i != n - 1; ++i) { i_scan(1, 300000, ' '); } i_scan(1, 300000, '\n'); assert(c_scan() == std::char_traits<char>::eof()); } } // namespace checker int main() { checker::check(); }