結果

問題 No.8072 Sum of sqrt(x)
ユーザー 259_Momone
提出日時 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);
      |             ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ソースコード

diff #

#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;
}
0