結果
問題 | No.9000 Hello World! (テスト用) |
ユーザー | moana |
提出日時 | 2020-09-15 21:47:40 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 8,275 bytes |
コンパイル時間 | 2,807 ms |
コンパイル使用メモリ | 207,000 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-22 02:43:31 |
合計ジャッジ時間 | 2,653 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
6,816 KB |
testcase_01 | AC | 2 ms
6,944 KB |
testcase_02 | AC | 2 ms
6,944 KB |
testcase_03 | AC | 2 ms
6,940 KB |
ソースコード
#include <bits/stdc++.h> #include <array> #include <limits> using namespace std; #define all(x) begin(x),end(x) #define rall(x) rbegin(x),rend(x) using int64 = long long; using uint64 = unsigned long long; using i32 = int32_t; using i64 = int64_t; using i128 = __int128_t; using u32 = uint32_t; using u64 = uint64_t; using u128 = __uint128_t; namespace FastIO { class Scanner { static constexpr int buf_size = (1 << 19); static constexpr int integer_size = 20; static constexpr int string_size = (int)5e5 + 5; // default char buf[buf_size] = {}; char *cur = buf, *ed = buf; public: Scanner() {} template <class T> inline Scanner& operator>>(T& val) { read(val); return *this; } private: inline void reload() { size_t len = ed - cur; memmove(buf, cur, len); char* tmp = buf + len; ed = tmp + fread(tmp, 1, buf_size - len, stdin); *ed = 0; cur = buf; } inline void skip_space() { while (true) { if (cur == ed) reload(); while (*cur == ' ' || *cur == '\n') ++cur; if (__builtin_expect(cur != ed, 1)) return; } } template <class T, std::enable_if_t<std::is_same<T, int>::value, int> = 0> inline void read(T& num) { skip_space(); if (cur + integer_size >= ed) reload(); bool neg = false; num = 0; if (*cur == '-') neg = true, ++cur; while (*cur >= '0') num = num * 10 + (*cur ^ 48), ++cur; if (neg) num = -num; } template <class T, std::enable_if_t<std::is_same<T, int64>::value, int> = 0> inline void read(T& num) { skip_space(); if (cur + integer_size >= ed) reload(); bool neg = false; num = 0; if (*cur == '-') neg = true, ++cur; while (*cur >= '0') num = num * 10 + (*cur ^ 48), ++cur; if (neg) num = -num; } template <class T, std::enable_if_t<std::is_same<T, std::string>::value, int> = 0> inline void read(T& str) { skip_space(); if (cur + str.size() >= ed) reload(); auto it = cur; while (!(*cur == ' ' || *cur == '\n')) ++cur; str = std::string(it, cur); } template <class T, std::enable_if_t<std::is_same<T, char>::value, int> = 0> inline void read(T& c) { skip_space(); if (cur + 1 >= ed) reload(); c = *cur, ++cur; } template <class T, std::enable_if_t<std::is_same<T, double>::value, int> = 0> inline void read(T& num) { skip_space(); if (cur + integer_size >= ed) reload(); bool neg = false; num = 0; if (*cur == '-') neg = true, ++cur; while (*cur >= '0' && *cur <= '9') num = num * 10 + (*cur ^ 48), ++cur; if (*cur != '.') return; ++cur; T base = 0.1; while (*cur >= '0' && *cur <= '9') { num += base * (*cur ^ 48); ++cur; base *= 0.1; } if (neg) num = -num; } template <class T, std::enable_if_t<std::is_same<T, long double>::value, int> = 0> inline void read(T& num) { skip_space(); if (cur + integer_size >= ed) reload(); bool neg = false; num = 0; if (*cur == '-') neg = true, ++cur; while (*cur >= '0' && *cur <= '9') num = num * 10 + (*cur ^ 48), ++cur; if (*cur != '.') return; ++cur; T base = 0.1; while (*cur >= '0' && *cur <= '9') { num += base * (*cur ^ 48); ++cur; base *= 0.1; } if (neg) num = -num; } template <class T> inline void read(std::vector<T>& vec) { for (T& e : vec) read(e); } template <class T, class U> inline void read(std::pair<T, U>& p) { read(p.first, p.second); } template <class Tuple, std::size_t... Is> inline void tuple_scan(Tuple& tp, std::index_sequence<Is...>) { (read(std::get<Is>(tp)), ...); } template <class... Args> inline void read(std::tuple<Args...>& tp) { tuple_scan(tp, std::index_sequence_for<Args...>{}); } inline void read() {} template <class Head, class... Tail> inline void read(Head&& head, Tail&&... tail) { read(head); read(std::forward<Tail>(tail)...); } }; class Printer { static constexpr int buf_size = (1 << 18); static constexpr int integer_size = 20; static constexpr int string_size = (1 << 6); static constexpr int margin = 1; static constexpr int n = 10000; char buf[buf_size + margin] = {}; char table[n * 4] = {}; char* cur = buf; public: constexpr Printer() { build(); } ~Printer() { flush(); } template <class T> inline Printer& operator<<(T val) { write(val); return *this; } template<class T> inline void println(T val) { write(val); write('\n'); } private: constexpr void build() { for (int i = 0; i < 10000; ++i) { int tmp = i; for (int j = 3; j >= 0; --j) { table[i * 4 + j] = tmp % 10 + '0'; tmp /= 10; } } } inline void flush() { fwrite(buf, 1, cur - buf, stdout); cur = buf; } template <class T, std::enable_if_t<std::is_same<T, int>::value, int> = 0> inline int get_digit(T n) { if (n >= (int)1e5) { if (n >= (int)1e8) return 9; if (n >= (int)1e7) return 8; if (n >= (int)1e6) return 7; return 6; } else { if (n >= (int)1e4) return 5; if (n >= (int)1e3) return 4; if (n >= (int)1e2) return 3; if (n >= (int)1e1) return 2; return 1; } } template <class T, std::enable_if_t<std::is_same<T, int64>::value, int> = 0> inline int get_digit(T n) { if (n >= (int64)1e10) { if (n >= (int64)1e14) { if (n >= (int64)1e18) return 19; if (n >= (int64)1e17) return 18; if (n >= (int64)1e16) return 17; if (n >= (int64)1e15) return 16; return 15; } else { if (n >= (int64)1e14) return 15; if (n >= (int64)1e13) return 14; if (n >= (int64)1e12) return 13; if (n >= (int64)1e11) return 12; return 11; } } else { if (n >= (int64)1e5) { if (n >= (int64)1e9) return 10; if (n >= (int64)1e8) return 9; if (n >= (int64)1e7) return 8; if (n >= (int64)1e6) return 7; return 6; } else { if (n >= (int64)1e4) return 5; if (n >= (int64)1e3) return 4; if (n >= (int64)1e2) return 3; if (n >= (int64)1e1) return 2; return 1; } } } template <class T, std::enable_if_t<std::is_same<T, int>::value, int> = 0> inline void write(T num) { if (__builtin_expect(cur + integer_size >= buf + buf_size, 0)) flush(); if (num == 0) { write('0'); return; } if (num < 0) { write('-'); num = -num; } int len = get_digit(num); int digits = len; while (num >= 10000) { memcpy(cur + len - 4, table + (num % 10000) * 4, 4); num /= 10000; len -= 4; } memcpy(cur, table + num * 4 + (4 - len), len); cur += digits; } template <class T, std::enable_if_t<std::is_same<T, int64>::value, int> = 0> inline void write(T num) { if (__builtin_expect(cur + integer_size >= buf + buf_size, 0)) flush(); if (num == 0) { write('0'); return; } if (num < 0) { write('-'); num = -num; } int len = get_digit(num); int digits = len; while (num >= 10000) { memcpy(cur + len - 4, table + (num % 10000) * 4, 4); num /= 10000; len -= 4; } memcpy(cur, table + num * 4 + (4 - len), len); cur += digits; } template <class T, std::enable_if_t<std::is_same<T, char>::value, int> = 0> inline void write(T c) { if (__builtin_expect(cur + 1 >= buf + buf_size, 0)) flush(); *cur = c; ++cur; } template <class T, std::enable_if_t<std::is_same<T, std::string>::value, int> = 0> inline void write(T str) { if (__builtin_expect(cur + str.size() >= buf + buf_size, 0)) flush(); for (char c : str) write(c); } template <class T, std::enable_if_t<std::is_same<T, const char*>::value, int> = 0> inline void write(T str) { if (__builtin_expect(cur + string_size >= buf + buf_size, 0)) flush(); for (int i = 0; str[i]; ++i) write(str[i]); } }; } // namespace FastIO FastIO::Scanner fin; FastIO::Printer fout; __attribute__((target("avx"), optimize("O3", "unroll-loops"))) int main() { string s; fin >> s; fout << "Hello World!"; fout.println(""); return 0; }