結果
問題 |
No.8072 Sum of sqrt(x)
|
ユーザー |
![]() |
提出日時 | 2020-09-12 23:01:59 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,478 bytes |
コンパイル時間 | 3,143 ms |
コンパイル使用メモリ | 196,992 KB |
最終ジャッジ日時 | 2025-01-14 13:58:33 |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 WA * 2 |
other | AC * 6 WA * 21 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:8:10: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 8 | fread(buffer, 1, buf_size, stdin); | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ main.cpp: In lambda function: main.cpp:16:18: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 16 | fread(tmp, 1, buf_size - len, stdin); | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include<bits/stdc++.h> int main(){ using namespace std; // my fast in constexpr unsigned long buf_size = 3UL << 18UL; char buffer[buf_size]; fread(buffer, 1, buf_size, stdin); unsigned long tmp_buf = 0; const auto &read = [&tmp_buf, &buffer] { const auto &M_reread_from_stdin = [&] { ptrdiff_t len = buf_size - tmp_buf; if (len > tmp_buf) return; memcpy(buffer, buffer + tmp_buf, len); char *tmp = buffer + len; fread(tmp, 1, buf_size - len, stdin); tmp_buf = 0; }; unsigned long ret; from_chars_result tmp{}; do { if (__builtin_expect(buf_size <= tmp_buf + 32, 0)) M_reread_from_stdin(); tmp = from_chars(begin(buffer) + tmp_buf, end(buffer), ret); tmp_buf = tmp.ptr - buffer + 1; } while (tmp.ec != errc{}); return ret; }; const auto &scan = [scan_impl = [&read](auto &x) -> decltype(auto) { return x = read(); }]( auto &...args) { tuple<decltype(args)...>{scan_impl(args)...}; }; // fast in kokomade unsigned long N; scan(N); vector<long double> v(N + 1); for(unsigned long i{1}; i <= N; ++i)v[i] = sqrtl(read()); for(unsigned long i{1}; i <= N; i <<= 1UL)for(unsigned long j{2 * i}; j <= N; j += 2 * i)v[j] += v[j - i]; for(unsigned long i{1}; i <= N; ++i)printf("%18.Lf\n", v[i] += v[i & (i - 1)]); return 0; }